diff --git a/composer.lock b/composer.lock
index 3253536..1ddf3ec 100644
--- a/composer.lock
+++ b/composer.lock
@@ -9,18 +9,21 @@
     "packages": [
         {
             "name": "composer/installers",
-            "version": "v1.0.21",
+            "version": "v1.0.22",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/installers.git",
-                "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45"
+                "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
-                "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
+                "url": "https://api.github.com/repos/composer/installers/zipball/bd9b14f094c89c8b5804a4e41edeb7853bb85046",
+                "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046",
                 "shasum": ""
             },
+            "require": {
+                "composer-plugin-api": "1.0.0"
+            },
             "replace": {
                 "roundcube/plugin-installer": "*",
                 "shama/baton": "*"
@@ -29,9 +32,9 @@
                 "composer/composer": "1.0.*@dev",
                 "phpunit/phpunit": "4.1.*"
             },
-            "type": "composer-installer",
+            "type": "composer-plugin",
             "extra": {
-                "class": "Composer\\Installers\\Installer",
+                "class": "Composer\\Installers\\Plugin",
                 "branch-alias": {
                     "dev-master": "1.0-dev"
                 }
@@ -100,33 +103,33 @@
                 "zend",
                 "zikula"
             ],
-            "time": "2015-02-18 17:17:01"
+            "time": "2015-10-29 23:28:48"
         },
         {
             "name": "composer/semver",
-            "version": "1.0.0",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/semver.git",
-                "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba"
+                "reference": "0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/semver/zipball/d0e1ccc6d44ab318b758d709e19176037da6b1ba",
-                "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba",
+                "url": "https://api.github.com/repos/composer/semver/zipball/0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3",
+                "reference": "0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.2"
+                "php": "^5.3.2 || ^7.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "~4.5",
-                "phpunit/phpunit-mock-objects": "~2.3"
+                "phpunit/phpunit": "^4.5 || ^5.0.5",
+                "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "0.1-dev"
+                    "dev-master": "1.x-dev"
                 }
             },
             "autoload": {
@@ -140,10 +143,6 @@
             ],
             "authors": [
                 {
-                    "name": "Rob Bast",
-                    "email": "rob.bast@gmail.com"
-                },
-                {
                     "name": "Nils Adermann",
                     "email": "naderman@naderman.de",
                     "homepage": "http://www.naderman.de"
@@ -152,6 +151,11 @@
                     "name": "Jordi Boggiano",
                     "email": "j.boggiano@seld.be",
                     "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
                 }
             ],
             "description": "Semver library that offers utilities, version constraint parsing and validation.",
@@ -161,7 +165,7 @@
                 "validation",
                 "versioning"
             ],
-            "time": "2015-09-21 09:42:36"
+            "time": "2015-11-10 11:17:42"
         },
         {
             "name": "doctrine/annotations",
@@ -233,16 +237,16 @@
         },
         {
             "name": "doctrine/cache",
-            "version": "v1.4.2",
+            "version": "v1.5.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/cache.git",
-                "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca"
+                "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/cache/zipball/8c434000f420ade76a07c64cbe08ca47e5c101ca",
-                "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca",
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
+                "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
                 "shasum": ""
             },
             "require": {
@@ -263,8 +267,8 @@
                 }
             },
             "autoload": {
-                "psr-0": {
-                    "Doctrine\\Common\\Cache\\": "lib/"
+                "psr-4": {
+                    "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -299,7 +303,7 @@
                 "cache",
                 "caching"
             ],
-            "time": "2015-08-31 12:36:41"
+            "time": "2015-11-02 18:35:48"
         },
         {
             "name": "doctrine/collections",
@@ -442,16 +446,16 @@
         },
         {
             "name": "doctrine/inflector",
-            "version": "v1.0.1",
+            "version": "v1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/inflector.git",
-                "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
+                "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
-                "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
+                "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+                "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
                 "shasum": ""
             },
             "require": {
@@ -463,7 +467,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
@@ -505,7 +509,7 @@
                 "singularize",
                 "string"
             ],
-            "time": "2014-12-20 21:24:13"
+            "time": "2015-11-06 14:35:42"
         },
         {
             "name": "doctrine/lexer",
@@ -625,16 +629,16 @@
         },
         {
             "name": "egulias/email-validator",
-            "version": "1.2.9",
+            "version": "1.2.11",
             "source": {
                 "type": "git",
                 "url": "https://github.com/egulias/EmailValidator.git",
-                "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1"
+                "reference": "04c6cdf9871140b80947c87db7770c0dd9c75c7c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/af864423f50ea59f96c87bb1eae147a70bcf67a1",
-                "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1",
+                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/04c6cdf9871140b80947c87db7770c0dd9c75c7c",
+                "reference": "04c6cdf9871140b80947c87db7770c0dd9c75c7c",
                 "shasum": ""
             },
             "require": {
@@ -674,20 +678,20 @@
                 "validation",
                 "validator"
             ],
-            "time": "2015-06-22 21:07:51"
+            "time": "2015-11-11 03:28:32"
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "6.1.0",
+            "version": "6.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81"
+                "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
-                "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/c6851d6e48f63b69357cbfa55bca116448140e0c",
+                "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c",
                 "shasum": ""
             },
             "require": {
@@ -736,20 +740,20 @@
                 "rest",
                 "web service"
             ],
-            "time": "2015-09-08 17:36:26"
+            "time": "2015-11-23 00:47:50"
         },
         {
             "name": "guzzlehttp/promises",
-            "version": "1.0.2",
+            "version": "1.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/promises.git",
-                "reference": "97fe7210def29451ec74923b27e552238defd75a"
+                "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a",
-                "reference": "97fe7210def29451ec74923b27e552238defd75a",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
+                "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
                 "shasum": ""
             },
             "require": {
@@ -787,20 +791,20 @@
             "keywords": [
                 "promise"
             ],
-            "time": "2015-08-15 19:37:21"
+            "time": "2015-10-15 22:28:00"
         },
         {
             "name": "guzzlehttp/psr7",
-            "version": "1.2.0",
+            "version": "1.2.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/psr7.git",
-                "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e"
+                "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
-                "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/4d0bdbe1206df7440219ce14c972aa57cc5e4982",
+                "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982",
                 "shasum": ""
             },
             "require": {
@@ -845,7 +849,49 @@
                 "stream",
                 "uri"
             ],
-            "time": "2015-08-15 19:32:36"
+            "time": "2015-11-03 01:34:55"
+        },
+        {
+            "name": "ircmaxell/password-compat",
+            "version": "v1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ircmaxell/password_compat.git",
+                "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c",
+                "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c",
+                "shasum": ""
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.*"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "lib/password.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Anthony Ferrara",
+                    "email": "ircmaxell@php.net",
+                    "homepage": "http://blog.ircmaxell.com"
+                }
+            ],
+            "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
+            "homepage": "https://github.com/ircmaxell/password_compat",
+            "keywords": [
+                "hashing",
+                "password"
+            ],
+            "time": "2014-11-20 16:49:30"
         },
         {
             "name": "masterminds/html5",
@@ -1107,34 +1153,37 @@
         },
         {
             "name": "symfony/class-loader",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/class-loader.git",
-                "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4"
+                "reference": "51f83451bf0ddfc696e47e4642d6cd10fcfce160"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/class-loader/zipball/320f8d2a9cdbcbeb24be602c124aae9d998474a4",
-                "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4",
+                "url": "https://api.github.com/repos/symfony/class-loader/zipball/51f83451bf0ddfc696e47e4642d6cd10fcfce160",
+                "reference": "51f83451bf0ddfc696e47e4642d6cd10fcfce160",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.9"
             },
             "require-dev": {
-                "symfony/finder": "~2.0,>=2.0.5"
+                "symfony/finder": "~2.0,>=2.0.5|~3.0.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\ClassLoader\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1152,29 +1201,30 @@
             ],
             "description": "Symfony ClassLoader Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-23 14:47:27"
+            "time": "2015-11-26 07:00:59"
         },
         {
             "name": "symfony/console",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "5efd632294c8320ea52492db22292ff853a43766"
+                "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/5efd632294c8320ea52492db22292ff853a43766",
-                "reference": "5efd632294c8320ea52492db22292ff853a43766",
+                "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
+                "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.9",
+                "symfony/polyfill-mbstring": "~1.0"
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/event-dispatcher": "~2.1",
-                "symfony/process": "~2.1"
+                "symfony/event-dispatcher": "~2.1|~3.0.0",
+                "symfony/process": "~2.1|~3.0.0"
             },
             "suggest": {
                 "psr/log": "For using the console logger",
@@ -1184,13 +1234,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Console\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1208,20 +1261,20 @@
             ],
             "description": "Symfony Console Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-20 14:38:46"
+            "time": "2015-11-30 12:35:10"
         },
         {
             "name": "symfony/debug",
-            "version": "v2.7.6",
+            "version": "v2.7.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug.git",
-                "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b"
+                "reference": "0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/fb9e6887db716939f41af0ba8ef38a1582eb501b",
-                "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa",
+                "reference": "0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa",
                 "shasum": ""
             },
             "require": {
@@ -1244,7 +1297,10 @@
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Debug\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1262,20 +1318,20 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-10-30 20:10:21"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "af284e795ec8a08c80d1fc47518fd23004b89847"
+                "reference": "1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/af284e795ec8a08c80d1fc47518fd23004b89847",
-                "reference": "af284e795ec8a08c80d1fc47518fd23004b89847",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4",
+                "reference": "1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4",
                 "shasum": ""
             },
             "require": {
@@ -1285,9 +1341,9 @@
                 "symfony/expression-language": "<2.6"
             },
             "require-dev": {
-                "symfony/config": "~2.2",
-                "symfony/expression-language": "~2.6",
-                "symfony/yaml": "~2.1"
+                "symfony/config": "~2.2|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/yaml": "~2.1|~3.0.0"
             },
             "suggest": {
                 "symfony/config": "",
@@ -1297,13 +1353,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\DependencyInjection\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1321,20 +1380,20 @@
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-27 15:38:06"
+            "time": "2015-11-30 06:56:28"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8"
+                "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87a5db5ea887763fa3a31a5471b512ff1596d9b8",
-                "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5eb815363c0388e83247e7e9853e5dbc14999cc",
+                "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc",
                 "shasum": ""
             },
             "require": {
@@ -1342,10 +1401,10 @@
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~2.0,>=2.0.5",
-                "symfony/dependency-injection": "~2.6",
-                "symfony/expression-language": "~2.6",
-                "symfony/stopwatch": "~2.3"
+                "symfony/config": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.6|~3.0.0",
+                "symfony/expression-language": "~2.6|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
@@ -1354,13 +1413,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\EventDispatcher\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1378,40 +1440,41 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-10-30 20:15:42"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "7598eea151ae3d4134df1f9957364b17809eea75"
+                "reference": "5ed0ec39ef684bec84d1fd9f2a55104e403b7e49"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7598eea151ae3d4134df1f9957364b17809eea75",
-                "reference": "7598eea151ae3d4134df1f9957364b17809eea75",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5ed0ec39ef684bec84d1fd9f2a55104e403b7e49",
+                "reference": "5ed0ec39ef684bec84d1fd9f2a55104e403b7e49",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.9",
+                "symfony/polyfill-php54": "~1.0"
             },
             "require-dev": {
-                "symfony/expression-language": "~2.4"
+                "symfony/expression-language": "~2.4|~3.0.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpFoundation\\": ""
                 },
-                "classmap": [
-                    "Resources/stubs"
+                "exclude-from-classmap": [
+                    "/Tests/"
                 ]
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1430,48 +1493,48 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-23 14:47:27"
+            "time": "2015-11-27 11:03:19"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77"
+                "reference": "a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4260f2273a446a6715063dc9ca89fd0c475c2f77",
-                "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905",
+                "reference": "a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.9",
                 "psr/log": "~1.0",
                 "symfony/debug": "~2.6,>=2.6.2",
-                "symfony/event-dispatcher": "~2.6,>=2.6.7",
-                "symfony/http-foundation": "~2.5,>=2.5.4"
+                "symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0",
+                "symfony/http-foundation": "~2.5,>=2.5.4|~3.0.0"
             },
             "conflict": {
                 "symfony/config": "<2.7"
             },
             "require-dev": {
-                "symfony/browser-kit": "~2.3",
-                "symfony/class-loader": "~2.1",
-                "symfony/config": "~2.7",
-                "symfony/console": "~2.3",
-                "symfony/css-selector": "~2.0,>=2.0.5",
-                "symfony/dependency-injection": "~2.2",
-                "symfony/dom-crawler": "~2.0,>=2.0.5",
-                "symfony/expression-language": "~2.4",
-                "symfony/finder": "~2.0,>=2.0.5",
-                "symfony/process": "~2.0,>=2.0.5",
-                "symfony/routing": "~2.2",
-                "symfony/stopwatch": "~2.3",
-                "symfony/templating": "~2.2",
-                "symfony/translation": "~2.0,>=2.0.5",
-                "symfony/var-dumper": "~2.6"
+                "symfony/browser-kit": "~2.3|~3.0.0",
+                "symfony/class-loader": "~2.1|~3.0.0",
+                "symfony/config": "~2.8",
+                "symfony/console": "~2.3|~3.0.0",
+                "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/dependency-injection": "~2.8|~3.0.0",
+                "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/expression-language": "~2.4|~3.0.0",
+                "symfony/finder": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/process": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/routing": "~2.8|~3.0.0",
+                "symfony/stopwatch": "~2.3|~3.0.0",
+                "symfony/templating": "~2.2|~3.0.0",
+                "symfony/translation": "~2.0,>=2.0.5|~3.0.0",
+                "symfony/var-dumper": "~2.6|~3.0.0"
             },
             "suggest": {
                 "symfony/browser-kit": "",
@@ -1485,13 +1548,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\HttpKernel\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1509,20 +1575,190 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-27 19:07:21"
+            "time": "2015-11-30 17:25:56"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "0b6a8940385311a24e060ec1fe35680e17c74497"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497",
+                "reference": "0b6a8940385311a24e060ec1fe35680e17c74497",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2015-11-04 20:28:58"
+        },
+        {
+            "name": "symfony/polyfill-php54",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php54.git",
+                "reference": "2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc",
+                "reference": "2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php54\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ],
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2015-11-04 20:28:58"
+        },
+        {
+            "name": "symfony/polyfill-php55",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php55.git",
+                "reference": "3adc962a6250c02adb508e85ecfa6fcfee9eec47"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/3adc962a6250c02adb508e85ecfa6fcfee9eec47",
+                "reference": "3adc962a6250c02adb508e85ecfa6fcfee9eec47",
+                "shasum": ""
+            },
+            "require": {
+                "ircmaxell/password-compat": "~1.0",
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php55\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2015-11-04 20:28:58"
         },
         {
             "name": "symfony/process",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7"
+                "reference": "1b988a88e3551102f3c2d9e1d47a18c3a78d6312"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/4a959dd4e19c2c5d7512689413921e0a74386ec7",
-                "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7",
+                "url": "https://api.github.com/repos/symfony/process/zipball/1b988a88e3551102f3c2d9e1d47a18c3a78d6312",
+                "reference": "1b988a88e3551102f3c2d9e1d47a18c3a78d6312",
                 "shasum": ""
             },
             "require": {
@@ -1531,13 +1767,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Process\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1555,7 +1794,7 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-23 14:47:27"
+            "time": "2015-11-30 12:35:10"
         },
         {
             "name": "symfony/psr-http-message-bridge",
@@ -1613,16 +1852,16 @@
         },
         {
             "name": "symfony/routing",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "f353e1f588679c3ec987624e6c617646bd01ba38"
+                "reference": "f76830dc0f8068df36226dc822e7fc1f5f73be46"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/f353e1f588679c3ec987624e6c617646bd01ba38",
-                "reference": "f353e1f588679c3ec987624e6c617646bd01ba38",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/f76830dc0f8068df36226dc822e7fc1f5f73be46",
+                "reference": "f76830dc0f8068df36226dc822e7fc1f5f73be46",
                 "shasum": ""
             },
             "require": {
@@ -1635,27 +1874,31 @@
                 "doctrine/annotations": "~1.0",
                 "doctrine/common": "~2.2",
                 "psr/log": "~1.0",
-                "symfony/config": "~2.7",
-                "symfony/expression-language": "~2.4",
-                "symfony/http-foundation": "~2.3",
-                "symfony/yaml": "~2.0,>=2.0.5"
+                "symfony/config": "~2.7|~3.0.0",
+                "symfony/expression-language": "~2.4|~3.0.0",
+                "symfony/http-foundation": "~2.3|~3.0.0",
+                "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation loader",
                 "symfony/config": "For using the all-in-one router or any loader",
+                "symfony/dependency-injection": "For loading routes from a service",
                 "symfony/expression-language": "For using expression matching",
                 "symfony/yaml": "For using the YAML loader"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Routing\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1679,31 +1922,32 @@
                 "uri",
                 "url"
             ],
-            "time": "2015-10-27 15:38:06"
+            "time": "2015-11-26 07:00:59"
         },
         {
             "name": "symfony/serializer",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/serializer.git",
-                "reference": "14056684acad23b8815eb336bccc0b4ac76bd823"
+                "reference": "aab4ce70b7d1ae7290388172141e776de18d4a1f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/serializer/zipball/14056684acad23b8815eb336bccc0b4ac76bd823",
-                "reference": "14056684acad23b8815eb336bccc0b4ac76bd823",
+                "url": "https://api.github.com/repos/symfony/serializer/zipball/aab4ce70b7d1ae7290388172141e776de18d4a1f",
+                "reference": "aab4ce70b7d1ae7290388172141e776de18d4a1f",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.9",
+                "symfony/polyfill-php55": "~1.0"
             },
             "require-dev": {
                 "doctrine/annotations": "~1.0",
                 "doctrine/cache": "~1.0",
-                "symfony/config": "~2.2",
-                "symfony/property-access": "~2.3",
-                "symfony/yaml": "~2.0,>=2.0.5"
+                "symfony/config": "~2.2|~3.0.0",
+                "symfony/property-access": "~2.3|~3.0.0",
+                "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
@@ -1715,13 +1959,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Serializer\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1739,33 +1986,34 @@
             ],
             "description": "Symfony Serializer Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-11-28 10:40:16"
         },
         {
             "name": "symfony/translation",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/translation.git",
-                "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8"
+                "reference": "6772657767649fc3b31df12705194fb4af11ef98"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation/zipball/6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
-                "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
+                "url": "https://api.github.com/repos/symfony/translation/zipball/6772657767649fc3b31df12705194fb4af11ef98",
+                "reference": "6772657767649fc3b31df12705194fb4af11ef98",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.9"
+                "php": ">=5.3.9",
+                "symfony/polyfill-mbstring": "~1.0"
             },
             "conflict": {
                 "symfony/config": "<2.7"
             },
             "require-dev": {
                 "psr/log": "~1.0",
-                "symfony/config": "~2.7",
-                "symfony/intl": "~2.4",
-                "symfony/yaml": "~2.2"
+                "symfony/config": "~2.8",
+                "symfony/intl": "~2.4|~3.0.0",
+                "symfony/yaml": "~2.2|~3.0.0"
             },
             "suggest": {
                 "psr/log": "To use logging capability in translator",
@@ -1775,13 +2023,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Translation\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1799,37 +2050,36 @@
             ],
             "description": "Symfony Translation Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-27 15:38:06"
+            "time": "2015-11-18 13:45:00"
         },
         {
             "name": "symfony/validator",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/validator.git",
-                "reference": "df9021e689aa3d08367881e7f8917219fabe5e64"
+                "reference": "8c42b96f5b23f0642c1a518addafcef8077154a2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/validator/zipball/df9021e689aa3d08367881e7f8917219fabe5e64",
-                "reference": "df9021e689aa3d08367881e7f8917219fabe5e64",
+                "url": "https://api.github.com/repos/symfony/validator/zipball/8c42b96f5b23f0642c1a518addafcef8077154a2",
+                "reference": "8c42b96f5b23f0642c1a518addafcef8077154a2",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.9",
-                "symfony/translation": "~2.4"
+                "symfony/translation": "~2.4|~3.0.0"
             },
             "require-dev": {
                 "doctrine/annotations": "~1.0",
                 "doctrine/cache": "~1.0",
-                "doctrine/common": "~2.3",
                 "egulias/email-validator": "~1.2,>=1.2.1",
-                "symfony/config": "~2.2",
-                "symfony/expression-language": "~2.4",
-                "symfony/http-foundation": "~2.1",
-                "symfony/intl": "~2.4",
-                "symfony/property-access": "~2.3",
-                "symfony/yaml": "~2.0,>=2.0.5"
+                "symfony/config": "~2.2|~3.0.0",
+                "symfony/expression-language": "~2.4|~3.0.0",
+                "symfony/http-foundation": "~2.1|~3.0.0",
+                "symfony/intl": "~2.4|~3.0.0",
+                "symfony/property-access": "~2.3|~3.0.0",
+                "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
             },
             "suggest": {
                 "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
@@ -1845,13 +2095,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Validator\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1869,20 +2122,20 @@
             ],
             "description": "Symfony Validator Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-18 20:23:18"
+            "time": "2015-11-20 14:39:26"
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.7.6",
+            "version": "v2.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "eca9019c88fbe250164affd107bc8057771f3f4d"
+                "reference": "f79824187de95064a2f5038904c4d7f0227fedb5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d",
-                "reference": "eca9019c88fbe250164affd107bc8057771f3f4d",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5",
+                "reference": "f79824187de95064a2f5038904c4d7f0227fedb5",
                 "shasum": ""
             },
             "require": {
@@ -1891,13 +2144,16 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.7-dev"
+                    "dev-master": "2.8-dev"
                 }
             },
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\Yaml\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -1915,7 +2171,7 @@
             ],
             "description": "Symfony Yaml Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-11-30 12:35:10"
         },
         {
             "name": "twig/twig",
@@ -2029,16 +2285,16 @@
         },
         {
             "name": "zendframework/zend-diactoros",
-            "version": "1.1.3",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-diactoros.git",
-                "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181"
+                "reference": "edfda00b9831630c19c411f85f50a47bb66af457"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
-                "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
+                "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/edfda00b9831630c19c411f85f50a47bb66af457",
+                "reference": "edfda00b9831630c19c411f85f50a47bb66af457",
                 "shasum": ""
             },
             "require": {
@@ -2055,8 +2311,8 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0-dev",
-                    "dev-develop": "1.1-dev"
+                    "dev-master": "1.2-dev",
+                    "dev-develop": "1.3-dev"
                 }
             },
             "autoload": {
@@ -2075,7 +2331,7 @@
                 "psr",
                 "psr-7"
             ],
-            "time": "2015-08-10 20:04:20"
+            "time": "2015-11-24 19:16:22"
         },
         {
             "name": "zendframework/zend-escaper",
@@ -2123,16 +2379,16 @@
         },
         {
             "name": "zendframework/zend-feed",
-            "version": "2.5.2",
+            "version": "2.6.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-feed.git",
-                "reference": "0661345b82b51428619e05d3aadd3de65b57fa54"
+                "reference": "f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/0661345b82b51428619e05d3aadd3de65b57fa54",
-                "reference": "0661345b82b51428619e05d3aadd3de65b57fa54",
+                "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f",
+                "reference": "f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f",
                 "shasum": ""
             },
             "require": {
@@ -2143,24 +2399,25 @@
             "require-dev": {
                 "fabpot/php-cs-fixer": "1.7.*",
                 "phpunit/phpunit": "~4.0",
+                "psr/http-message": "^1.0",
                 "zendframework/zend-cache": "~2.5",
                 "zendframework/zend-db": "~2.5",
                 "zendframework/zend-http": "~2.5",
-                "zendframework/zend-servicemanager": "~2.5",
                 "zendframework/zend-validator": "~2.5"
             },
             "suggest": {
-                "zendframework/zend-cache": "Zend\\Cache component",
-                "zendframework/zend-db": "Zend\\Db component",
+                "psr/http-message": "PSR-7 ^1.0, if you wish to use Zend\\Feed\\Reader\\Http\\Psr7ResponseDecorator",
+                "zendframework/zend-cache": "Zend\\Cache component, for optionally caching feeds between requests",
+                "zendframework/zend-db": "Zend\\Db component, for use with PubSubHubbub",
                 "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
-                "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations",
-                "zendframework/zend-validator": "Zend\\Validator component"
+                "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for easily extending ExtensionManager implementations",
+                "zendframework/zend-validator": "Zend\\Validator component, for validating feeds and Atom entries in the Writer subcomponent"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.5-dev",
-                    "dev-develop": "2.6-dev"
+                    "dev-master": "2.6-dev",
+                    "dev-develop": "2.7-dev"
                 }
             },
             "autoload": {
@@ -2178,7 +2435,7 @@
                 "feed",
                 "zf2"
             ],
-            "time": "2015-08-04 21:39:18"
+            "time": "2015-11-24 15:38:00"
         },
         {
             "name": "zendframework/zend-hydrator",
@@ -2238,16 +2495,16 @@
         },
         {
             "name": "zendframework/zend-stdlib",
-            "version": "2.7.3",
+            "version": "2.7.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-stdlib.git",
-                "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc"
+                "reference": "cae029346a33663b998507f94962eb27de060683"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
-                "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
+                "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cae029346a33663b998507f94962eb27de060683",
+                "reference": "cae029346a33663b998507f94962eb27de060683",
                 "shasum": ""
             },
             "require": {
@@ -2292,7 +2549,7 @@
                 "stdlib",
                 "zf2"
             ],
-            "time": "2015-09-25 04:06:33"
+            "time": "2015-10-15 15:57:32"
         }
     ],
     "packages-dev": [
@@ -2521,24 +2778,24 @@
         },
         {
             "name": "fabpot/goutte",
-            "version": "v3.1.1",
+            "version": "v3.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfPHP/Goutte.git",
-                "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc"
+                "reference": "3cbc6ed222422a28400e470050f14928a153207e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
-                "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
+                "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3cbc6ed222422a28400e470050f14928a153207e",
+                "reference": "3cbc6ed222422a28400e470050f14928a153207e",
                 "shasum": ""
             },
             "require": {
                 "guzzlehttp/guzzle": "^6.0",
                 "php": ">=5.5.0",
-                "symfony/browser-kit": "~2.1",
-                "symfony/css-selector": "~2.1",
-                "symfony/dom-crawler": "~2.1"
+                "symfony/browser-kit": "~2.1|~3.0",
+                "symfony/css-selector": "~2.1|~3.0",
+                "symfony/dom-crawler": "~2.1|~3.0"
             },
             "type": "application",
             "extra": {
@@ -2566,7 +2823,7 @@
             "keywords": [
                 "scraper"
             ],
-            "time": "2015-08-29 16:16:56"
+            "time": "2015-11-05 12:58:44"
         },
         {
             "name": "jcalderonzumba/gastonjs",
@@ -3083,16 +3340,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "4.8.11",
+            "version": "4.8.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5"
+                "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bdd199472410fd7e32751f9c814c7e06f2c21bd5",
-                "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
+                "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
                 "shasum": ""
             },
             "require": {
@@ -3151,7 +3408,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2015-10-07 10:39:46"
+            "time": "2015-11-11 11:32:49"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -3443,16 +3700,16 @@
         },
         {
             "name": "sebastian/global-state",
-            "version": "1.0.0",
+            "version": "1.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-                "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
                 "shasum": ""
             },
             "require": {
@@ -3490,7 +3747,7 @@
             "keywords": [
                 "global state"
             ],
-            "time": "2014-10-06 09:23:50"
+            "time": "2015-10-12 03:26:01"
         },
         {
             "name": "sebastian/recursion-context",
@@ -3582,16 +3839,16 @@
         },
         {
             "name": "symfony/browser-kit",
-            "version": "v2.7.6",
+            "version": "v2.7.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367"
+                "reference": "bd28847ea2193916074c7b11d4fdd78570049694"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/07d664a052572ccc28eb2ab7dbbe82155b1ad367",
-                "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367",
+                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bd28847ea2193916074c7b11d4fdd78570049694",
+                "reference": "bd28847ea2193916074c7b11d4fdd78570049694",
                 "shasum": ""
             },
             "require": {
@@ -3614,7 +3871,10 @@
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\BrowserKit\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3632,20 +3892,20 @@
             ],
             "description": "Symfony BrowserKit Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-23 14:47:27"
+            "time": "2015-11-02 20:20:53"
         },
         {
             "name": "symfony/css-selector",
-            "version": "v2.7.6",
+            "version": "v2.7.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
-                "reference": "e1b865b26be4a56d22a8dee398375044a80c865b"
+                "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1b865b26be4a56d22a8dee398375044a80c865b",
-                "reference": "e1b865b26be4a56d22a8dee398375044a80c865b",
+                "url": "https://api.github.com/repos/symfony/css-selector/zipball/abb47717fb88aebd9437da2fc8bb01a50a36679f",
+                "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f",
                 "shasum": ""
             },
             "require": {
@@ -3660,7 +3920,10 @@
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\CssSelector\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3682,20 +3945,20 @@
             ],
             "description": "Symfony CssSelector Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-10-30 20:10:21"
         },
         {
             "name": "symfony/dom-crawler",
-            "version": "v2.7.6",
+            "version": "v2.7.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612"
+                "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/5fef7d8b80d8f9992df99d8ee283f420484c9612",
-                "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612",
+                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b33593cbfe1d81b50d48353f338aca76a08658d8",
+                "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8",
                 "shasum": ""
             },
             "require": {
@@ -3716,7 +3979,10 @@
             "autoload": {
                 "psr-4": {
                     "Symfony\\Component\\DomCrawler\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -3734,45 +4000,14 @@
             ],
             "description": "Symfony DomCrawler Component",
             "homepage": "https://symfony.com",
-            "time": "2015-10-11 09:39:48"
+            "time": "2015-11-02 20:20:53"
         }
     ],
     "aliases": [],
     "minimum-stability": "dev",
     "stability-flags": {
-        "php": 0,
-        "symfony/class-loader": 0,
-        "symfony/console": 0,
-        "symfony/dependency-injection": 0,
-        "symfony/event-dispatcher": 0,
-        "symfony/http-foundation": 0,
-        "symfony/http-kernel": 0,
-        "symfony/routing": 0,
-        "symfony/serializer": 0,
-        "symfony/translation": 0,
-        "symfony/validator": 0,
-        "symfony/process": 0,
-        "symfony/yaml": 0,
-        "twig/twig": 0,
-        "doctrine/common": 0,
-        "doctrine/annotations": 0,
-        "guzzlehttp/guzzle": 0,
-        "symfony-cmf/routing": 0,
-        "easyrdf/easyrdf": 0,
-        "zendframework/zend-feed": 0,
-        "stack/builder": 0,
-        "egulias/email-validator": 0,
-        "masterminds/html5": 0,
-        "symfony/psr-http-message-bridge": 0,
-        "zendframework/zend-diactoros": 0,
-        "composer/semver": 0,
-        "behat/mink": 0,
-        "behat/mink-goutte-driver": 0,
         "jcalderonzumba/gastonjs": 20,
-        "jcalderonzumba/mink-phantomjs-driver": 20,
-        "mikey179/vfsstream": 0,
-        "phpunit/phpunit": 0,
-        "symfony/css-selector": 0
+        "jcalderonzumba/mink-phantomjs-driver": 20
     },
     "prefer-stable": true,
     "prefer-lowest": false,
diff --git a/core/composer.json b/core/composer.json
index afb170a..442f4a6 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -5,18 +5,18 @@
   "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.*",
+    "symfony/class-loader": "~2.8",
+    "symfony/console": "~2.8",
+    "symfony/dependency-injection": "~2.8",
+    "symfony/event-dispatcher": "~2.8",
+    "symfony/http-foundation": "~2.8",
+    "symfony/http-kernel": "~2.8",
+    "symfony/routing": "~2.8",
+    "symfony/serializer": "~2.8",
+    "symfony/translation": "~2.8",
+    "symfony/validator": "~2.8",
+    "symfony/process": "~2.8",
+    "symfony/yaml": "~2.8",
     "twig/twig": "^1.23.1",
     "doctrine/common": "2.5.*",
     "doctrine/annotations": "1.2.*",
diff --git a/core/core.services.yml b/core/core.services.yml
index afccb31..415d3ce 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -497,6 +497,7 @@ services:
   entity.manager:
     class: Drupal\Core\Entity\EntityManager
     parent: container.trait
+    deprecated: %service_id%-no-warning
     # @todo Remove this tag in https://www.drupal.org/node/2549143.
     tags:
       - { name: plugin_manager_cache_clear }
@@ -1015,7 +1016,7 @@ services:
     class: Symfony\Component\HttpKernel\EventListener\RouterListener
     tags:
       - { name: event_subscriber }
-    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
+    arguments: ['@router', '@request_stack', '@router.request_context', NULL]
   bare_html_page_renderer:
     class: Drupal\Core\Render\BareHtmlPageRenderer
     arguments: ['@renderer', '@html_response.attachments_processor']
@@ -1297,71 +1298,71 @@ services:
     calls:
       - [setContainer, ['@service_container']]
     arguments: ['feed.writer.']
-# Zend Feed reader plugins. Plugins should be set as prototype scope.
+# Zend Feed reader plugins. Plugin instances should not be shared.
   feed.reader.dublincoreentry:
     class: Zend\Feed\Reader\Extension\DublinCore\Entry
-    scope: prototype
+    shared: false
   feed.reader.dublincorefeed:
     class: Zend\Feed\Reader\Extension\DublinCore\Feed
-    scope: prototype
+    shared: false
   feed.reader.contententry:
     class: Zend\Feed\Reader\Extension\Content\Entry
-    scope: prototype
+    shared: false
   feed.reader.atomentry:
     class: Zend\Feed\Reader\Extension\Atom\Entry
-    scope: prototype
+    shared: false
   feed.reader.atomfeed:
     class: Zend\Feed\Reader\Extension\Atom\Feed
-    scope: prototype
+    shared: false
   feed.reader.slashentry:
     class: Zend\Feed\Reader\Extension\Slash\Entry
-    scope: prototype
+    shared: false
   feed.reader.wellformedwebentry:
     class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
-    scope: prototype
+    shared: false
   feed.reader.threadentry:
     class: Zend\Feed\Reader\Extension\Thread\Entry
-    scope: prototype
+    shared: false
   feed.reader.podcastentry:
     class: Zend\Feed\Reader\Extension\Podcast\Entry
-    scope: prototype
+    shared: false
   feed.reader.podcastfeed:
     class: Zend\Feed\Reader\Extension\Podcast\Feed
-    scope: prototype
+    shared: false
 # Zend Feed writer plugins. Plugins should be set as prototype scope.
   feed.writer.atomrendererfeed:
     class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
-    scope: prototype
+    shared: false
   feed.writer.contentrendererentry:
     class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
-    scope: prototype
+    shared: false
   feed.writer.dublincorerendererentry:
     class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
-    scope: prototype
+    shared: false
   feed.writer.dublincorerendererfeed:
     class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
-    scope: prototype
+    shared: false
   feed.writer.itunesentry:
     class: Zend\Feed\Writer\Extension\ITunes\Entry
-    scope: prototype
+    shared: false
   feed.writer.itunesfeed:
     class: Zend\Feed\Writer\Extension\ITunes\Feed
-    scope: prototype
+    shared: false
   feed.writer.itunesrendererentry:
     class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
-    scope: prototype
+    shared: false
   feed.writer.itunesrendererfeed:
     class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
-    scope: prototype
+    shared: false
   feed.writer.slashrendererentry:
     class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
-    scope: prototype
+    shared: false
   feed.writer.threadingrendererentry:
     class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
-    scope: prototype
+    shared: false
   feed.writer.wellformedwebrendererentry:
     class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
-    scope: prototype
+    shared: false
   theme.manager:
     class: Drupal\Core\Theme\ThemeManager
     arguments: ['@app.root', '@theme.negotiator', '@theme.initialization', '@request_stack', '@module_handler']
diff --git a/core/lib/Drupal/Component/DependencyInjection/Container.php b/core/lib/Drupal/Component/DependencyInjection/Container.php
index df25ae8..201b3d1 100644
--- a/core/lib/Drupal/Component/DependencyInjection/Container.php
+++ b/core/lib/Drupal/Component/DependencyInjection/Container.php
@@ -9,6 +9,7 @@
 
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\DependencyInjection\IntrospectableContainerInterface;
+use Symfony\Component\DependencyInjection\ResettableContainerInterface;
 use Symfony\Component\DependencyInjection\ScopeInterface;
 use Symfony\Component\DependencyInjection\Exception\LogicException;
 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
@@ -54,7 +55,7 @@
  *
  * @ingroup container
  */
-class Container implements IntrospectableContainerInterface {
+class Container implements IntrospectableContainerInterface, ResettableContainerInterface {
 
   /**
    * The parameters of the container.
@@ -182,11 +183,7 @@ public function get($id, $invalid_behavior = ContainerInterface::EXCEPTION_ON_IN
     }
     catch (\Exception $e) {
       unset($this->loading[$id]);
-
-      // Remove a potentially shared service that was constructed incompletely.
-      if (array_key_exists($id, $this->services)) {
-        unset($this->services[$id]);
-      }
+      unset($this->services[$id]);
 
       if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $invalid_behavior) {
         return;
@@ -201,6 +198,17 @@ public function get($id, $invalid_behavior = ContainerInterface::EXCEPTION_ON_IN
   }
 
   /**
+   * {@inheritdoc}
+   */
+  public function reset() {
+    if (!empty($this->scopedServices)) {
+      throw new LogicException('Resetting the container is not allowed when a scope is active.');
+    }
+
+    $this->services = [];
+  }
+
+  /**
    * Creates a service from a service definition.
    *
    * @param array $definition
@@ -359,6 +367,10 @@ protected function createService(array $definition, $id) {
    * {@inheritdoc}
    */
   public function set($id, $service, $scope = ContainerInterface::SCOPE_CONTAINER) {
+    if (!in_array($scope, array('container', 'request')) || ('request' === $scope && 'request' !== $id)) {
+      @trigger_error('The concept of container scopes is deprecated since version 2.8 and will be removed in 3.0. Omit the third parameter.', E_USER_DEPRECATED);
+    }
+
     $this->services[$id] = $service;
   }
 
@@ -585,6 +597,10 @@ protected function getParameterAlternatives($name) {
    * {@inheritdoc}
    */
   public function enterScope($name) {
+    if ('request' !== $name) {
+      @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+    }
+
     throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
   }
 
@@ -592,6 +608,10 @@ public function enterScope($name) {
    * {@inheritdoc}
    */
   public function leaveScope($name) {
+    if ('request' !== $name) {
+      @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+    }
+
     throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
   }
 
@@ -599,6 +619,11 @@ public function leaveScope($name) {
    * {@inheritdoc}
    */
   public function addScope(ScopeInterface $scope) {
+
+    $name = $scope->getName();
+    if ('request' !== $name) {
+      @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+    }
     throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
   }
 
@@ -606,6 +631,10 @@ public function addScope(ScopeInterface $scope) {
    * {@inheritdoc}
    */
   public function hasScope($name) {
+    if ('request' !== $name) {
+      @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+    }
+
     throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
   }
 
@@ -613,6 +642,8 @@ public function hasScope($name) {
    * {@inheritdoc}
    */
   public function isScopeActive($name) {
+    @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+
     throw new \BadMethodCallException(sprintf("'%s' is not supported by Drupal 8.", __FUNCTION__));
   }
 
@@ -626,4 +657,11 @@ public function getServiceIds() {
     return array_keys($this->serviceDefinitions + $this->services);
   }
 
+  /**
+   * Ensure that cloning doesn't work.
+   */
+  private function __clone()
+  {
+  }
+
 }
diff --git a/core/lib/Drupal/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumper.php b/core/lib/Drupal/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumper.php
index 23290b6..663c0d6 100644
--- a/core/lib/Drupal/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumper.php
+++ b/core/lib/Drupal/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumper.php
@@ -252,6 +252,10 @@ protected function getServiceDefinition(Definition $definition) {
       }
     }
 
+    if ($definition->isShared() === FALSE) {
+      $service['shared'] = $definition->isShared();
+    }
+
     if (($decorated = $definition->getDecoratedService()) !== NULL) {
       throw new InvalidArgumentException("The 'decorated' definition is not supported by the Drupal 8 run-time container. The Container Builder should have resolved that during the DecoratorServicePass compiler pass.");
     }
diff --git a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php
index 1edaec3..ff72be4 100644
--- a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php
+++ b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php
@@ -9,8 +9,12 @@
 
 use Symfony\Component\DependencyInjection\ContainerBuilder as SymfonyContainerBuilder;
 use Symfony\Component\DependencyInjection\Container as SymfonyContainer;
+use Symfony\Component\DependencyInjection\Definition;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
+use Symfony\Component\DependencyInjection\Exception\RuntimeException;
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
 
 /**
  * Drupal's dependency injection container builder.
@@ -30,6 +34,146 @@ public function __construct(ParameterBagInterface $parameterBag = NULL) {
   }
 
   /**
+   * Creates a service for a service definition.
+   *
+   * Overrides the parent implementation, but just changes one line about
+   * deprecations, see below.
+   *
+   * @param \Symfony\Component\DependencyInjection\Definition $definition
+   * @param string $id
+   * @param bool|true $tryProxy
+   *
+   * @return mixed|object
+   */
+  public function createService(Definition $definition, $id, $tryProxy = true)
+  {
+    if ($definition->isSynthetic()) {
+      throw new RuntimeException(sprintf('You have requested a synthetic service ("%s"). The DIC does not know how to construct this service.', $id));
+    }
+
+    if ($definition->isDeprecated()) {
+      // @this line is changed.
+      if ($definition->getDeprecationMessage($id) != ($id . '-no-warning')) {
+        @trigger_error($definition->getDeprecationMessage($id), E_USER_DEPRECATED);
+      }
+    }
+
+    if ($tryProxy && $definition->isLazy()) {
+      $container = $this;
+
+      $proxy = $this
+        ->getProxyInstantiator()
+        ->instantiateProxy(
+          $container,
+          $definition,
+          $id, function () use ($definition, $id, $container) {
+          return $container->createService($definition, $id, false);
+        }
+        );
+      $this->shareService($definition, $proxy, $id);
+
+      return $proxy;
+    }
+
+    $parameterBag = $this->getParameterBag();
+
+    if (null !== $definition->getFile()) {
+      require_once $parameterBag->resolveValue($definition->getFile());
+    }
+
+    $arguments = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getArguments())));
+
+    if (null !== $factory = $definition->getFactory()) {
+      if (is_array($factory)) {
+        $factory = array($this->resolveServices($parameterBag->resolveValue($factory[0])), $factory[1]);
+      } elseif (!is_string($factory)) {
+        throw new RuntimeException(sprintf('Cannot create service "%s" because of invalid factory', $id));
+      }
+
+      $service = call_user_func_array($factory, $arguments);
+
+      if (!$definition->isDeprecated() && is_array($factory) && is_string($factory[0])) {
+        $r = new \ReflectionClass($factory[0]);
+
+        if (0 < strpos($r->getDocComment(), "\n * @deprecated ")) {
+          @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" factory class. It should either be deprecated or its factory upgraded.', $id, $r->name), E_USER_DEPRECATED);
+        }
+      }
+    } elseif (null !== $definition->getFactoryMethod(false)) {
+      if (null !== $definition->getFactoryClass(false)) {
+        $factory = $parameterBag->resolveValue($definition->getFactoryClass(false));
+      } elseif (null !== $definition->getFactoryService(false)) {
+        $factory = $this->get($parameterBag->resolveValue($definition->getFactoryService(false)));
+      } else {
+        throw new RuntimeException(sprintf('Cannot create service "%s" from factory method without a factory service or factory class.', $id));
+      }
+
+      $service = call_user_func_array(array($factory, $definition->getFactoryMethod(false)), $arguments);
+    } else {
+      $r = new \ReflectionClass($parameterBag->resolveValue($definition->getClass()));
+
+      $service = null === $r->getConstructor() ? $r->newInstance() : $r->newInstanceArgs($arguments);
+
+      if (!$definition->isDeprecated() && 0 < strpos($r->getDocComment(), "\n * @deprecated ")) {
+        // Skip deprecation notices for deprecations which opt out.
+        @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" class. It should either be deprecated or its implementation upgraded.', $id, $r->name), E_USER_DEPRECATED);
+      }
+    }
+
+    if ($tryProxy || !$definition->isLazy()) {
+      // share only if proxying failed, or if not a proxy
+      $this->shareService($definition, $service, $id);
+    }
+
+    foreach ($definition->getMethodCalls() as $call) {
+      $this->callMethod($service, $call);
+    }
+
+    $properties = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties())));
+    foreach ($properties as $name => $value) {
+      $service->$name = $value;
+    }
+
+    if ($callable = $definition->getConfigurator()) {
+      if (is_array($callable)) {
+        $callable[0] = $parameterBag->resolveValue($callable[0]);
+
+        if ($callable[0] instanceof Reference) {
+          $callable[0] = $this->get((string) $callable[0], $callable[0]->getInvalidBehavior());
+        } elseif ($callable[0] instanceof Definition) {
+          $callable[0] = $this->createService($callable[0], null);
+        }
+      }
+
+      if (!is_callable($callable)) {
+        throw new InvalidArgumentException(sprintf('The configure callable for class "%s" is not a callable.', get_class($service)));
+      }
+
+      call_user_func($callable, $service);
+    }
+
+    return $service;
+  }
+
+  /**
+   * Direct copy of the parent function.
+   */
+  protected function shareService(Definition $definition, $service, $id)
+  {
+    if ($definition->isShared() && self::SCOPE_PROTOTYPE !== $scope = $definition->getScope(false)) {
+      if (self::SCOPE_CONTAINER !== $scope && !isset($this->scopedServices[$scope])) {
+        throw new InactiveScopeException($id, $scope);
+      }
+
+      $this->services[$lowerId = strtolower($id)] = $service;
+
+      if (self::SCOPE_CONTAINER !== $scope) {
+        $this->scopedServices[$scope][$lowerId] = $service;
+      }
+    }
+  }
+
+  /**
    * Overrides Symfony\Component\DependencyInjection\ContainerBuilder::set().
    *
    * Drupal's container builder can be used at runtime after compilation, so we
diff --git a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
index 4c7fea9..1c2bf81 100644
--- a/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
+++ b/core/lib/Drupal/Core/DependencyInjection/YamlFileLoader.php
@@ -159,8 +159,15 @@ private function parseDefinition($id, $service, $file)
             $definition->setClass($service['class']);
         }
 
+        if (isset($service['shared'])) {
+            $definition->setShared($service['shared']);
+        }
+
         if (isset($service['scope'])) {
-            $definition->setScope($service['scope']);
+            if ('request' !== $id) {
+                @trigger_error(sprintf('The "scope" key of service "%s" in file "%s" is deprecated since version 2.8 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED);
+            }
+            $definition->setScope($service['scope'], false);
         }
 
         if (isset($service['synthetic'])) {
@@ -183,6 +190,10 @@ private function parseDefinition($id, $service, $file)
             $definition->setAbstract($service['abstract']);
         }
 
+        if (array_key_exists('deprecated', $service)) {
+            $definition->setDeprecated(true, $service['deprecated']);
+        }
+
         if (isset($service['factory'])) {
             if (is_string($service['factory'])) {
                 if (strpos($service['factory'], ':') !== false && strpos($service['factory'], '::') === false) {
@@ -275,7 +286,30 @@ private function parseDefinition($id, $service, $file)
 
         if (isset($service['decorates'])) {
             $renameId = isset($service['decoration_inner_name']) ? $service['decoration_inner_name'] : null;
-            $definition->setDecoratedService($service['decorates'], $renameId);
+            $priority = isset($service['decoration_priority']) ? $service['decoration_priority'] : 0;
+            $definition->setDecoratedService($service['decorates'], $renameId, $priority);
+        }
+
+        if (isset($service['autowire'])) {
+            $definition->setAutowired($service['autowire']);
+        }
+
+        if (isset($service['autowiring_types'])) {
+            if (is_string($service['autowiring_types'])) {
+                $definition->addAutowiringType($service['autowiring_types']);
+            } else {
+                if (!is_array($service['autowiring_types'])) {
+                    throw new InvalidArgumentException(sprintf('Parameter "autowiring_types" must be a string or an array for service "%s" in %s. Check your YAML syntax.', $id, $file));
+                }
+
+                foreach ($service['autowiring_types'] as $autowiringType) {
+                    if (!is_string($autowiringType)) {
+                        throw new InvalidArgumentException(sprintf('A "autowiring_types" attribute must be of type string for service "%s" in %s. Check your YAML syntax.', $id, $file));
+                    }
+
+                    $definition->addAutowiringType($autowiringType);
+                }
+            }
         }
 
         $this->container->setDefinition($id, $definition);
diff --git a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
index ca9a2e4..5a4e57f 100644
--- a/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
+++ b/core/tests/Drupal/Tests/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumperTest.php
@@ -358,6 +358,10 @@ public function getDefinitionsDataProvider() {
         'shared' => FALSE,
       ) + $base_service_definition;
 
+      $service_definitions[] = array(
+          'shared' => FALSE,
+        ) + $base_service_definition;
+
       // Test factory.
       $service_definitions[] = array(
         'factory' => array(new Reference('bar'), 'factoryMethod'),
@@ -397,6 +401,7 @@ public function getDefinitionsDataProvider() {
         $definition->getProperties()->willReturn($service_definition['properties']);
         $definition->getMethodCalls()->willReturn($service_definition['calls']);
         $definition->getScope()->willReturn($service_definition['scope']);
+        $definition->isShared()->willReturn($service_definition['shared']);
         $definition->getDecoratedService()->willReturn(NULL);
         $definition->getFactory()->willReturn($service_definition['factory']);
         $definition->getConfigurator()->willReturn($service_definition['configurator']);
diff --git a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
index f36d836..3abd4cd 100644
--- a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
+++ b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php
@@ -13,6 +13,7 @@
 use Symfony\Component\EventDispatcher\Tests\AbstractEventDispatcherTest;
 use Symfony\Component\EventDispatcher\Tests\CallableClass;
 use Symfony\Component\EventDispatcher\Tests\TestEventListener;
+use Symfony\Component\EventDispatcher\Tests\ContainerAwareEventDispatcherTest as SymfonyContainerAwareEventDispatcherTest;
 
 /**
  * Unit tests for the ContainerAwareEventDispatcher.
@@ -27,7 +28,7 @@
  *
  * @group Symfony
  */
-class ContainerAwareEventDispatcherTest extends AbstractEventDispatcherTest
+class ContainerAwareEventDispatcherTest extends SymfonyContainerAwareEventDispatcherTest
 {
     protected function createEventDispatcher()
     {
@@ -175,4 +176,11 @@ public function testRemoveService()
         $otherService = $container->get('other_listener_service');
         $this->assertTrue($otherService->preFooInvoked);
     }
-}
+
+    public function testGetListenerPriority()
+    {
+        // Override the parent test as our implementation doesn't define
+        // getListenerPriority().
+    }
+
+ }
diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php
index 2efb13f..ee13b93 100644
--- a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php
+++ b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/BackendCompilerPassTest.php
@@ -72,7 +72,8 @@ public function providerTestProcess() {
 
     // Configure a manual alias for the service, so ensure that it is not
     // overridden by the default backend.
-    $container = clone $container;
+    $container = $this->getMysqlContainer($service);
+    $container->setParameter('default_backend', 'mysql');
     $container->setDefinition('mariadb.service', new Definition($prefix . 'MariaDb'));
     $container->setAlias('service', new Alias('mariadb.service'));
     $data[] = array($prefix . 'MariaDb', $container);
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 5e1469e..990cfdc 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -13,9 +13,7 @@
 namespace Composer\Autoload;
 
 /**
- * ClassLoader implements a PSR-0 class loader
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
  *
  *     $loader = new \Composer\Autoload\ClassLoader();
  *
@@ -39,6 +37,8 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see    http://www.php-fig.org/psr/psr-0/
+ * @see    http://www.php-fig.org/psr/psr-4/
  */
 class ClassLoader
 {
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index fac9eab..bb009b0 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,6 +6,7 @@
 $baseDir = dirname($vendorDir);
 
 return array(
+    'CallbackFilterIterator' => $vendorDir . '/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php',
     'Drupal\\Component\\Utility\\Timer' => $baseDir . '/core/lib/Drupal/Component/Utility/Timer.php',
     'Drupal\\Component\\Utility\\Unicode' => $baseDir . '/core/lib/Drupal/Component/Utility/Unicode.php',
     'Drupal\\Core\\Database\\Database' => $baseDir . '/core/lib/Drupal/Core/Database/Database.php',
@@ -410,6 +411,7 @@
     'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
     'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+    'RecursiveCallbackFilterIterator' => $vendorDir . '/symfony/polyfill-php54/Resources/stubs/RecursiveCallbackFilterIterator.php',
     'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
     'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
     'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
@@ -437,6 +439,7 @@
     'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
     'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
     'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
+    'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
     'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
     'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
     'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
@@ -445,7 +448,7 @@
     'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
     'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
     'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
-    'SessionHandlerInterface' => $vendorDir . '/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php',
+    'SessionHandlerInterface' => $vendorDir . '/symfony/polyfill-php54/Resources/stubs/SessionHandlerInterface.php',
     'Symfony\\Component\\HttpFoundation\\FileBag' => $vendorDir . '/symfony/http-foundation/FileBag.php',
     'Symfony\\Component\\HttpFoundation\\HeaderBag' => $vendorDir . '/symfony/http-foundation/HeaderBag.php',
     'Symfony\\Component\\HttpFoundation\\ParameterBag' => $vendorDir . '/symfony/http-foundation/ParameterBag.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index 52711f4..c22f4ba 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -6,8 +6,12 @@
 $baseDir = dirname($vendorDir);
 
 return array(
-    $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
-    $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
-    $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
-    $baseDir . '/core/lib/Drupal.php',
+    '3e2471375464aac821502deb0ac64275' => $vendorDir . '/symfony/polyfill-php54/bootstrap.php',
+    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+    'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
+    'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
+    '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
+    'e40631d46120a9c38ea139981f8dab26' => $vendorDir . '/ircmaxell/password-compat/lib/password.php',
+    'edc6464955a37aa4d5fbf39d40fb6ee7' => $vendorDir . '/symfony/polyfill-php55/bootstrap.php',
+    '454414594637b9dd94a19af83f56f1a2' => $baseDir . '/core/lib/Drupal.php',
 );
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index bb43043..f32c949 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -17,7 +17,6 @@
     'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
     'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'),
     'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'),
-    'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib'),
     'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib'),
     'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib'),
     'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src'),
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index 030a0de..f86cd7f 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -14,6 +14,9 @@
     'Zend\\Escaper\\' => array($vendorDir . '/zendframework/zend-escaper/src'),
     'Zend\\Diactoros\\' => array($vendorDir . '/zendframework/zend-diactoros/src'),
     'Wikimedia\\Composer\\' => array($vendorDir . '/wikimedia/composer-merge-plugin/src'),
+    'Symfony\\Polyfill\\Php55\\' => array($vendorDir . '/symfony/polyfill-php55'),
+    'Symfony\\Polyfill\\Php54\\' => array($vendorDir . '/symfony/polyfill-php54'),
+    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
     'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
     'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'),
     'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
@@ -43,6 +46,7 @@
     'Drupal\\Core\\' => array($baseDir . '/core/lib/Drupal/Core'),
     'Drupal\\Component\\' => array($baseDir . '/core/lib/Drupal/Component'),
     'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
+    'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
     'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
     'Behat\\Mink\\Driver\\' => array($vendorDir . '/behat/mink-browserkit-driver/src', $vendorDir . '/behat/mink-goutte-driver/src'),
     'Behat\\Mink\\' => array($vendorDir . '/behat/mink/src'),
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
index 4bd9987..4303fce 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -41,15 +41,19 @@ public static function getLoader()
         $loader->register(true);
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
-        foreach ($includeFiles as $file) {
-            composerRequireDrupal8($file);
+        foreach ($includeFiles as $fileIdentifier => $file) {
+            composerRequireDrupal8($fileIdentifier, $file);
         }
 
         return $loader;
     }
 }
 
-function composerRequireDrupal8($file)
+function composerRequireDrupal8($fileIdentifier, $file)
 {
-    require $file;
+    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+        require $file;
+
+        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+    }
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index b58ef9a..196a243 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,165 +1,5 @@
 [
     {
-        "name": "composer/installers",
-        "version": "v1.0.21",
-        "version_normalized": "1.0.21.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/composer/installers.git",
-            "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
-            "reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
-            "shasum": ""
-        },
-        "replace": {
-            "roundcube/plugin-installer": "*",
-            "shama/baton": "*"
-        },
-        "require-dev": {
-            "composer/composer": "1.0.*@dev",
-            "phpunit/phpunit": "4.1.*"
-        },
-        "time": "2015-02-18 17:17:01",
-        "type": "composer-installer",
-        "extra": {
-            "class": "Composer\\Installers\\Installer",
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Composer\\Installers\\": "src/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Kyle Robinson Young",
-                "email": "kyle@dontkry.com",
-                "homepage": "https://github.com/shama"
-            }
-        ],
-        "description": "A multi-framework Composer library installer",
-        "homepage": "http://composer.github.com/installers/",
-        "keywords": [
-            "Craft",
-            "Dolibarr",
-            "Hurad",
-            "MODX Evo",
-            "OXID",
-            "SMF",
-            "Thelia",
-            "WolfCMS",
-            "agl",
-            "aimeos",
-            "annotatecms",
-            "bitrix",
-            "cakephp",
-            "chef",
-            "codeigniter",
-            "concrete5",
-            "croogo",
-            "dokuwiki",
-            "drupal",
-            "elgg",
-            "fuelphp",
-            "grav",
-            "installer",
-            "joomla",
-            "kohana",
-            "laravel",
-            "lithium",
-            "magento",
-            "mako",
-            "mediawiki",
-            "modulework",
-            "moodle",
-            "phpbb",
-            "piwik",
-            "ppi",
-            "puppet",
-            "roundcube",
-            "shopware",
-            "silverstripe",
-            "symfony",
-            "typo3",
-            "wordpress",
-            "zend",
-            "zikula"
-        ]
-    },
-    {
-        "name": "composer/semver",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/composer/semver.git",
-            "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/composer/semver/zipball/d0e1ccc6d44ab318b758d709e19176037da6b1ba",
-            "reference": "d0e1ccc6d44ab318b758d709e19176037da6b1ba",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.5",
-            "phpunit/phpunit-mock-objects": "~2.3"
-        },
-        "time": "2015-09-21 09:42:36",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "0.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-4": {
-                "Composer\\Semver\\": "src"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Rob Bast",
-                "email": "rob.bast@gmail.com"
-            },
-            {
-                "name": "Nils Adermann",
-                "email": "naderman@naderman.de",
-                "homepage": "http://www.naderman.de"
-            },
-            {
-                "name": "Jordi Boggiano",
-                "email": "j.boggiano@seld.be",
-                "homepage": "http://seld.be"
-            }
-        ],
-        "description": "Semver library that offers utilities, version constraint parsing and validation.",
-        "keywords": [
-            "semantic",
-            "semver",
-            "validation",
-            "versioning"
-        ]
-    },
-    {
         "name": "doctrine/lexer",
         "version": "v1.0.1",
         "version_normalized": "1.0.1.0",
@@ -216,37 +56,37 @@
         ]
     },
     {
-        "name": "doctrine/inflector",
-        "version": "v1.0.1",
-        "version_normalized": "1.0.1.0",
+        "name": "doctrine/collections",
+        "version": "v1.3.0",
+        "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/inflector.git",
-            "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
+            "url": "https://github.com/doctrine/collections.git",
+            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
-            "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
+            "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.2"
         },
         "require-dev": {
-            "phpunit/phpunit": "4.*"
+            "phpunit/phpunit": "~4.0"
         },
-        "time": "2014-12-20 21:24:13",
+        "time": "2015-04-14 22:21:58",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "1.2.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Inflector\\": "lib/"
+                "Doctrine\\Common\\Collections\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -275,47 +115,48 @@
                 "email": "schmittjoh@gmail.com"
             }
         ],
-        "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+        "description": "Collections Abstraction library",
         "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "inflection",
-            "pluralize",
-            "singularize",
-            "string"
+            "array",
+            "collections",
+            "iterator"
         ]
     },
     {
-        "name": "doctrine/collections",
-        "version": "v1.3.0",
-        "version_normalized": "1.3.0.0",
+        "name": "doctrine/annotations",
+        "version": "v1.2.7",
+        "version_normalized": "1.2.7.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/collections.git",
-            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
+            "url": "https://github.com/doctrine/annotations.git",
+            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
-            "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+            "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
             "shasum": ""
         },
         "require": {
+            "doctrine/lexer": "1.*",
             "php": ">=5.3.2"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0"
+            "doctrine/cache": "1.*",
+            "phpunit/phpunit": "4.*"
         },
-        "time": "2015-04-14 22:21:58",
+        "time": "2015-08-31 12:32:49",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.2.x-dev"
+                "dev-master": "1.3.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Collections\\": "lib/"
+                "Doctrine\\Common\\Annotations\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -344,51 +185,51 @@
                 "email": "schmittjoh@gmail.com"
             }
         ],
-        "description": "Collections Abstraction library",
+        "description": "Docblock Annotations Parser",
         "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "array",
-            "collections",
-            "iterator"
+            "annotations",
+            "docblock",
+            "parser"
         ]
     },
     {
-        "name": "doctrine/cache",
-        "version": "v1.4.2",
-        "version_normalized": "1.4.2.0",
+        "name": "doctrine/common",
+        "version": "v2.5.1",
+        "version_normalized": "2.5.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/cache.git",
-            "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca"
+            "url": "https://github.com/doctrine/common.git",
+            "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/cache/zipball/8c434000f420ade76a07c64cbe08ca47e5c101ca",
-            "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca",
+            "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9",
+            "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9",
             "shasum": ""
         },
         "require": {
+            "doctrine/annotations": "1.*",
+            "doctrine/cache": "1.*",
+            "doctrine/collections": "1.*",
+            "doctrine/inflector": "1.*",
+            "doctrine/lexer": "1.*",
             "php": ">=5.3.2"
         },
-        "conflict": {
-            "doctrine/common": ">2.2,<2.4"
-        },
         "require-dev": {
-            "phpunit/phpunit": ">=3.7",
-            "predis/predis": "~1.0",
-            "satooshi/php-coveralls": "~0.6"
+            "phpunit/phpunit": "~3.7"
         },
-        "time": "2015-08-31 12:36:41",
+        "time": "2015-08-31 13:00:22",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.5.x-dev"
+                "dev-master": "2.6.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Cache\\": "lib/"
+                "Doctrine\\Common\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -417,120 +258,109 @@
                 "email": "schmittjoh@gmail.com"
             }
         ],
-        "description": "Caching library offering an object-oriented API for many cache backends",
+        "description": "Common Library for Doctrine projects",
         "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "cache",
-            "caching"
+            "annotations",
+            "collections",
+            "eventmanager",
+            "persistence",
+            "spl"
         ]
     },
     {
-        "name": "doctrine/annotations",
-        "version": "v1.2.7",
-        "version_normalized": "1.2.7.0",
+        "name": "easyrdf/easyrdf",
+        "version": "0.9.1",
+        "version_normalized": "0.9.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/annotations.git",
-            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
+            "url": "https://github.com/njh/easyrdf.git",
+            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
-            "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+            "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
+            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566",
             "shasum": ""
         },
         "require": {
-            "doctrine/lexer": "1.*",
-            "php": ">=5.3.2"
+            "ext-mbstring": "*",
+            "ext-pcre": "*",
+            "php": ">=5.2.8"
         },
         "require-dev": {
-            "doctrine/cache": "1.*",
-            "phpunit/phpunit": "4.*"
+            "phpunit/phpunit": "~3.5",
+            "sami/sami": "~1.4",
+            "squizlabs/php_codesniffer": "~1.4.3"
         },
-        "time": "2015-08-31 12:32:49",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            }
+        "suggest": {
+            "ml/json-ld": "~1.0"
         },
+        "time": "2015-02-27 09:45:49",
+        "type": "library",
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Annotations\\": "lib/"
+                "EasyRdf_": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
-            },
-            {
-                "name": "Benjamin Eberlei",
-                "email": "kontakt@beberlei.de"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com"
-            },
-            {
-                "name": "Jonathan Wage",
-                "email": "jonwage@gmail.com"
+                "name": "Nicholas Humfrey",
+                "email": "njh@aelius.com",
+                "homepage": "http://www.aelius.com/njh/",
+                "role": "Developer"
             },
             {
-                "name": "Johannes Schmitt",
-                "email": "schmittjoh@gmail.com"
+                "name": "Alexey Zakhlestin",
+                "email": "indeyets@gmail.com",
+                "role": "Developer"
             }
         ],
-        "description": "Docblock Annotations Parser",
-        "homepage": "http://www.doctrine-project.org",
+        "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
+        "homepage": "http://www.easyrdf.org/",
         "keywords": [
-            "annotations",
-            "docblock",
-            "parser"
+            "Linked Data",
+            "RDF",
+            "Semantic Web",
+            "Turtle",
+            "rdfa",
+            "sparql"
         ]
     },
     {
-        "name": "doctrine/common",
-        "version": "v2.5.1",
-        "version_normalized": "2.5.1.0",
+        "name": "psr/http-message",
+        "version": "1.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/common.git",
-            "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9"
+            "url": "https://github.com/php-fig/http-message.git",
+            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/common/zipball/0009b8f0d4a917aabc971fb089eba80e872f83f9",
-            "reference": "0009b8f0d4a917aabc971fb089eba80e872f83f9",
+            "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
+            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
             "shasum": ""
         },
         "require": {
-            "doctrine/annotations": "1.*",
-            "doctrine/cache": "1.*",
-            "doctrine/collections": "1.*",
-            "doctrine/inflector": "1.*",
-            "doctrine/lexer": "1.*",
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~3.7"
+            "php": ">=5.3.0"
         },
-        "time": "2015-08-31 13:00:22",
+        "time": "2015-05-04 20:22:00",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.6.x-dev"
+                "dev-master": "1.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Doctrine\\Common\\": "lib/"
+            "psr-4": {
+                "Psr\\Http\\Message\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -539,134 +369,108 @@
         ],
         "authors": [
             {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
-            },
-            {
-                "name": "Benjamin Eberlei",
-                "email": "kontakt@beberlei.de"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com"
-            },
-            {
-                "name": "Jonathan Wage",
-                "email": "jonwage@gmail.com"
-            },
-            {
-                "name": "Johannes Schmitt",
-                "email": "schmittjoh@gmail.com"
+                "name": "PHP-FIG",
+                "homepage": "http://www.php-fig.org/"
             }
         ],
-        "description": "Common Library for Doctrine projects",
-        "homepage": "http://www.doctrine-project.org",
+        "description": "Common interface for HTTP messages",
         "keywords": [
-            "annotations",
-            "collections",
-            "eventmanager",
-            "persistence",
-            "spl"
+            "http",
+            "http-message",
+            "psr",
+            "psr-7",
+            "request",
+            "response"
         ]
     },
     {
-        "name": "easyrdf/easyrdf",
-        "version": "0.9.1",
-        "version_normalized": "0.9.1.0",
+        "name": "masterminds/html5",
+        "version": "2.1.2",
+        "version_normalized": "2.1.2.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/njh/easyrdf.git",
-            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566"
+            "url": "https://github.com/Masterminds/html5-php.git",
+            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
-            "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566",
+            "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
+            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
             "shasum": ""
         },
         "require": {
-            "ext-mbstring": "*",
-            "ext-pcre": "*",
-            "php": ">=5.2.8"
+            "ext-libxml": "*",
+            "php": ">=5.3.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~3.5",
-            "sami/sami": "~1.4",
-            "squizlabs/php_codesniffer": "~1.4.3"
-        },
-        "suggest": {
-            "ml/json-ld": "~1.0"
+            "phpunit/phpunit": "4.*",
+            "sami/sami": "~2.0",
+            "satooshi/php-coveralls": "0.6.*"
         },
-        "time": "2015-02-27 09:45:49",
+        "time": "2015-06-07 08:43:18",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.1-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "EasyRdf_": "lib/"
+            "psr-4": {
+                "Masterminds\\": "src"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Nicholas Humfrey",
-                "email": "njh@aelius.com",
-                "homepage": "http://www.aelius.com/njh/",
-                "role": "Developer"
+                "name": "Matt Butcher",
+                "email": "technosophos@gmail.com"
             },
             {
-                "name": "Alexey Zakhlestin",
-                "email": "indeyets@gmail.com",
-                "role": "Developer"
+                "name": "Asmir Mustafic",
+                "email": "goetas@gmail.com"
+            },
+            {
+                "name": "Matt Farina",
+                "email": "matt@mattfarina.com"
             }
         ],
-        "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
-        "homepage": "http://www.easyrdf.org/",
+        "description": "An HTML5 parser and serializer.",
+        "homepage": "http://masterminds.github.io/html5-php",
         "keywords": [
-            "Linked Data",
-            "RDF",
-            "Semantic Web",
-            "Turtle",
-            "rdfa",
-            "sparql"
+            "HTML5",
+            "dom",
+            "html",
+            "parser",
+            "querypath",
+            "serializer",
+            "xml"
         ]
     },
     {
-        "name": "egulias/email-validator",
-        "version": "1.2.9",
-        "version_normalized": "1.2.9.0",
+        "name": "psr/log",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/egulias/EmailValidator.git",
-            "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1"
+            "url": "https://github.com/php-fig/log.git",
+            "reference": "1.0.0"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/af864423f50ea59f96c87bb1eae147a70bcf67a1",
-            "reference": "af864423f50ea59f96c87bb1eae147a70bcf67a1",
+            "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+            "reference": "1.0.0",
             "shasum": ""
         },
-        "require": {
-            "doctrine/lexer": "~1.0,>=1.0.1",
-            "php": ">= 5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4",
-            "satooshi/php-coveralls": "dev-master"
-        },
-        "time": "2015-06-22 21:07:51",
+        "time": "2012-12-21 11:40:51",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.0.x-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Egulias\\": "src/"
+                "Psr\\Log\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -675,41 +479,41 @@
         ],
         "authors": [
             {
-                "name": "Eduardo Gulias Davis"
+                "name": "PHP-FIG",
+                "homepage": "http://www.php-fig.org/"
             }
         ],
-        "description": "A library for validating emails",
-        "homepage": "https://github.com/egulias/EmailValidator",
+        "description": "Common interface for logging libraries",
         "keywords": [
-            "email",
-            "emailvalidation",
-            "emailvalidator",
-            "validation",
-            "validator"
+            "log",
+            "psr",
+            "psr-3"
         ]
     },
     {
-        "name": "guzzlehttp/promises",
-        "version": "1.0.2",
-        "version_normalized": "1.0.2.0",
+        "name": "stack/builder",
+        "version": "v1.0.3",
+        "version_normalized": "1.0.3.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/guzzle/promises.git",
-            "reference": "97fe7210def29451ec74923b27e552238defd75a"
+            "url": "https://github.com/stackphp/builder.git",
+            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a",
-            "reference": "97fe7210def29451ec74923b27e552238defd75a",
+            "url": "https://api.github.com/repos/stackphp/builder/zipball/c1f8a4693b55c563405024f708a76ef576c3b276",
+            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.5.0"
+            "php": ">=5.3.0",
+            "symfony/http-foundation": "~2.1",
+            "symfony/http-kernel": "~2.1"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0"
+            "silex/silex": "~1.0"
         },
-        "time": "2015-08-15 19:37:21",
+        "time": "2014-11-23 20:37:11",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -718,58 +522,65 @@
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Promise\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
-        },
+            "psr-0": {
+                "Stack": "src"
+            }
+        },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
             "MIT"
         ],
         "authors": [
             {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
+                "name": "Igor Wiedler",
+                "email": "igor@wiedler.ch"
             }
         ],
-        "description": "Guzzle promises library",
+        "description": "Builder for stack middlewares based on HttpKernelInterface.",
         "keywords": [
-            "promise"
+            "stack"
         ]
     },
     {
-        "name": "psr/http-message",
-        "version": "1.0",
-        "version_normalized": "1.0.0.0",
+        "name": "symfony-cmf/routing",
+        "version": "1.3.0",
+        "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/php-fig/http-message.git",
-            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
+            "url": "https://github.com/symfony-cmf/Routing.git",
+            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
-            "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
+            "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6",
+            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.0"
+            "php": ">=5.3.3",
+            "psr/log": "~1.0",
+            "symfony/http-kernel": "~2.2",
+            "symfony/routing": "~2.2"
         },
-        "time": "2015-05-04 20:22:00",
+        "require-dev": {
+            "symfony/config": "~2.2",
+            "symfony/dependency-injection": "~2.0@stable",
+            "symfony/event-dispatcher": "~2.1"
+        },
+        "suggest": {
+            "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1"
+        },
+        "time": "2014-10-20 20:55:17",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "1.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Psr\\Http\\Message\\": "src/"
+                "Symfony\\Cmf\\Component\\Routing\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -778,60 +589,50 @@
         ],
         "authors": [
             {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
+                "name": "Symfony CMF Community",
+                "homepage": "https://github.com/symfony-cmf/Routing/contributors"
             }
         ],
-        "description": "Common interface for HTTP messages",
+        "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
+        "homepage": "http://cmf.symfony.com",
         "keywords": [
-            "http",
-            "http-message",
-            "psr",
-            "psr-7",
-            "request",
-            "response"
+            "database",
+            "routing"
         ]
     },
     {
-        "name": "guzzlehttp/psr7",
-        "version": "1.2.0",
-        "version_normalized": "1.2.0.0",
+        "name": "symfony/psr-http-message-bridge",
+        "version": "v0.2",
+        "version_normalized": "0.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/guzzle/psr7.git",
-            "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e"
+            "url": "https://github.com/symfony/psr-http-message-bridge.git",
+            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
-            "reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
+            "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/dc7e308e1dc2898a46776e2221a643cb08315453",
+            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.4.0",
-            "psr/http-message": "~1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "1.0"
+            "php": ">=5.3.3",
+            "psr/http-message": "~1.0",
+            "symfony/http-foundation": "~2.3|~3.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0"
+            "symfony/phpunit-bridge": "~2.7|~3.0"
         },
-        "time": "2015-08-15 19:32:36",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0-dev"
-            }
+        "suggest": {
+            "zendframework/zend-diactoros": "To use the Zend Diactoros factory"
         },
+        "time": "2015-05-29 17:57:12",
+        "type": "symfony-bridge",
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "GuzzleHttp\\Psr7\\": "src/"
-            },
-            "files": [
-                "src/functions_include.php"
-            ]
+                "Symfony\\Bridge\\PsrHttpMessage\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -839,160 +640,165 @@
         ],
         "authors": [
             {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
+            },
+            {
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com"
             }
         ],
-        "description": "PSR-7 message implementation",
+        "description": "PSR HTTP message bridge",
+        "homepage": "http://symfony.com",
         "keywords": [
             "http",
-            "message",
-            "stream",
-            "uri"
+            "http-message",
+            "psr-7"
         ]
     },
     {
-        "name": "masterminds/html5",
-        "version": "2.1.2",
-        "version_normalized": "2.1.2.0",
+        "name": "zendframework/zend-hydrator",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/Masterminds/html5-php.git",
-            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4"
+            "url": "https://github.com/zendframework/zend-hydrator.git",
+            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
-            "reference": "8f782e0f01a6e33a319bdc8f6de9cfd6569979a4",
+            "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/f3ed8b833355140350bbed98d8a7b8b66875903f",
+            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f",
             "shasum": ""
         },
         "require": {
-            "ext-libxml": "*",
-            "php": ">=5.3.0"
+            "php": ">=5.5",
+            "zendframework/zend-stdlib": "^2.5.1"
         },
         "require-dev": {
-            "phpunit/phpunit": "4.*",
-            "sami/sami": "~2.0",
-            "satooshi/php-coveralls": "0.6.*"
+            "phpunit/phpunit": "~4.0",
+            "squizlabs/php_codesniffer": "^2.0@dev",
+            "zendframework/zend-eventmanager": "^2.5.1",
+            "zendframework/zend-filter": "^2.5.1",
+            "zendframework/zend-inputfilter": "^2.5.1",
+            "zendframework/zend-serializer": "^2.5.1",
+            "zendframework/zend-servicemanager": "^2.5.1"
         },
-        "time": "2015-06-07 08:43:18",
+        "suggest": {
+            "zendframework/zend-eventmanager": "^2.5.1, to support aggregate hydrator usage",
+            "zendframework/zend-filter": "^2.5.1, to support naming strategy hydrator usage",
+            "zendframework/zend-serializer": "^2.5.1, to use the SerializableStrategy",
+            "zendframework/zend-servicemanager": "^2.5.1, to support hydrator plugin manager usage"
+        },
+        "time": "2015-09-17 14:06:43",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.1-dev"
+                "dev-master": "1.0-dev",
+                "dev-develop": "1.1-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Masterminds\\": "src"
+                "Zend\\Hydrator\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Matt Butcher",
-                "email": "technosophos@gmail.com"
-            },
-            {
-                "name": "Asmir Mustafic",
-                "email": "goetas@gmail.com"
-            },
-            {
-                "name": "Matt Farina",
-                "email": "matt@mattfarina.com"
-            }
+            "BSD-3-Clause"
         ],
-        "description": "An HTML5 parser and serializer.",
-        "homepage": "http://masterminds.github.io/html5-php",
+        "homepage": "https://github.com/zendframework/zend-hydrator",
         "keywords": [
-            "HTML5",
-            "dom",
-            "html",
-            "parser",
-            "querypath",
-            "serializer",
-            "xml"
+            "hydrator",
+            "zf2"
         ]
     },
     {
-        "name": "psr/log",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
+        "name": "zendframework/zend-escaper",
+        "version": "2.5.1",
+        "version_normalized": "2.5.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/php-fig/log.git",
-            "reference": "1.0.0"
+            "url": "https://github.com/zendframework/zend-escaper.git",
+            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
-            "reference": "1.0.0",
+            "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
+            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
             "shasum": ""
         },
-        "time": "2012-12-21 11:40:51",
+        "require": {
+            "php": ">=5.3.23"
+        },
+        "require-dev": {
+            "fabpot/php-cs-fixer": "1.7.*",
+            "phpunit/phpunit": "~4.0"
+        },
+        "time": "2015-06-03 14:05:37",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.5-dev",
+                "dev-develop": "2.6-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Psr\\Log\\": ""
+            "psr-4": {
+                "Zend\\Escaper\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "PHP-FIG",
-                "homepage": "http://www.php-fig.org/"
-            }
+            "BSD-3-Clause"
         ],
-        "description": "Common interface for logging libraries",
+        "homepage": "https://github.com/zendframework/zend-escaper",
         "keywords": [
-            "log",
-            "psr",
-            "psr-3"
+            "escaper",
+            "zf2"
         ]
     },
     {
-        "name": "stack/builder",
-        "version": "v1.0.3",
-        "version_normalized": "1.0.3.0",
+        "name": "behat/mink",
+        "version": "v1.7.0",
+        "version_normalized": "1.7.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/stackphp/builder.git",
-            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276"
+            "url": "https://github.com/minkphp/Mink.git",
+            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/stackphp/builder/zipball/c1f8a4693b55c563405024f708a76ef576c3b276",
-            "reference": "c1f8a4693b55c563405024f708a76ef576c3b276",
+            "url": "https://api.github.com/repos/minkphp/Mink/zipball/6c129030ec2cc029905cf969a56ca8f087b2dfdf",
+            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.0",
-            "symfony/http-foundation": "~2.1",
-            "symfony/http-kernel": "~2.1"
+            "php": ">=5.3.1",
+            "symfony/css-selector": "~2.1"
         },
         "require-dev": {
-            "silex/silex": "~1.0"
+            "symfony/phpunit-bridge": "~2.7"
         },
-        "time": "2014-11-23 20:37:11",
-        "type": "library",
-        "extra": {
+        "suggest": {
+            "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
+            "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
+            "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
+            "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)"
+        },
+        "time": "2015-09-20 20:24:03",
+        "type": "library",
+        "extra": {
             "branch-alias": {
-                "dev-master": "1.0-dev"
+                "dev-master": "1.7.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Stack": "src"
+            "psr-4": {
+                "Behat\\Mink\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -1001,55 +807,55 @@
         ],
         "authors": [
             {
-                "name": "Igor Wiedler",
-                "email": "igor@wiedler.ch"
+                "name": "Konstantin Kudryashov",
+                "email": "ever.zet@gmail.com",
+                "homepage": "http://everzet.com"
             }
         ],
-        "description": "Builder for stack middlewares based on HttpKernelInterface.",
+        "description": "Browser controller/emulator abstraction for PHP",
+        "homepage": "http://mink.behat.org/",
         "keywords": [
-            "stack"
+            "browser",
+            "testing",
+            "web"
         ]
     },
     {
-        "name": "symfony-cmf/routing",
-        "version": "1.3.0",
+        "name": "behat/mink-browserkit-driver",
+        "version": "v1.3.0",
         "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony-cmf/Routing.git",
-            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6"
+            "url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
+            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6",
-            "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6",
+            "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/da47df1593dac132f04d24e7277ef40d33d9f201",
+            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "psr/log": "~1.0",
-            "symfony/http-kernel": "~2.2",
-            "symfony/routing": "~2.2"
+            "behat/mink": "~1.7@dev",
+            "php": ">=5.3.6",
+            "symfony/browser-kit": "~2.3",
+            "symfony/dom-crawler": "~2.3"
         },
         "require-dev": {
-            "symfony/config": "~2.2",
-            "symfony/dependency-injection": "~2.0@stable",
-            "symfony/event-dispatcher": "~2.1"
-        },
-        "suggest": {
-            "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1"
+            "silex/silex": "~1.2",
+            "symfony/phpunit-bridge": "~2.7"
         },
-        "time": "2014-10-20 20:55:17",
-        "type": "library",
+        "time": "2015-09-21 20:56:13",
+        "type": "mink-driver",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.3-dev"
+                "dev-master": "1.3.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Cmf\\Component\\Routing\\": ""
+                "Behat\\Mink\\Driver\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -1058,49 +864,55 @@
         ],
         "authors": [
             {
-                "name": "Symfony CMF Community",
-                "homepage": "https://github.com/symfony-cmf/Routing/contributors"
+                "name": "Konstantin Kudryashov",
+                "email": "ever.zet@gmail.com",
+                "homepage": "http://everzet.com"
             }
         ],
-        "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
-        "homepage": "http://cmf.symfony.com",
+        "description": "Symfony2 BrowserKit driver for Mink framework",
+        "homepage": "http://mink.behat.org/",
         "keywords": [
-            "database",
-            "routing"
+            "Mink",
+            "Symfony2",
+            "browser",
+            "testing"
         ]
     },
     {
-        "name": "symfony/psr-http-message-bridge",
-        "version": "v0.2",
-        "version_normalized": "0.2.0.0",
+        "name": "behat/mink-goutte-driver",
+        "version": "v1.2.0",
+        "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/psr-http-message-bridge.git",
-            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453"
+            "url": "https://github.com/minkphp/MinkGoutteDriver.git",
+            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/dc7e308e1dc2898a46776e2221a643cb08315453",
-            "reference": "dc7e308e1dc2898a46776e2221a643cb08315453",
+            "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/c8e254f127d6f2242b994afd4339fb62d471df3f",
+            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "psr/http-message": "~1.0",
-            "symfony/http-foundation": "~2.3|~3.0"
+            "behat/mink": "~1.6@dev",
+            "behat/mink-browserkit-driver": "~1.2@dev",
+            "fabpot/goutte": "~1.0.4|~2.0|~3.1",
+            "php": ">=5.3.1"
         },
         "require-dev": {
-            "symfony/phpunit-bridge": "~2.7|~3.0"
+            "symfony/phpunit-bridge": "~2.7"
         },
-        "suggest": {
-            "zendframework/zend-diactoros": "To use the Zend Diactoros factory"
+        "time": "2015-09-21 21:31:11",
+        "type": "mink-driver",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.2.x-dev"
+            }
         },
-        "time": "2015-05-29 17:57:12",
-        "type": "symfony-bridge",
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Bridge\\PsrHttpMessage\\": ""
+                "Behat\\Mink\\Driver\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -1109,715 +921,725 @@
         ],
         "authors": [
             {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
-            },
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "name": "Konstantin Kudryashov",
+                "email": "ever.zet@gmail.com",
+                "homepage": "http://everzet.com"
             }
         ],
-        "description": "PSR HTTP message bridge",
-        "homepage": "http://symfony.com",
+        "description": "Goutte driver for Mink framework",
+        "homepage": "http://mink.behat.org/",
         "keywords": [
-            "http",
-            "http-message",
-            "psr-7"
+            "browser",
+            "goutte",
+            "headless",
+            "testing"
         ]
     },
     {
-        "name": "zendframework/zend-diactoros",
-        "version": "1.1.3",
-        "version_normalized": "1.1.3.0",
+        "name": "mikey179/vfsStream",
+        "version": "v1.6.0",
+        "version_normalized": "1.6.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/zendframework/zend-diactoros.git",
-            "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181"
+            "url": "https://github.com/mikey179/vfsStream.git",
+            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
-            "reference": "e2f5c12916c74da384058d0dfbc7fbc0b03d1181",
+            "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/73bcb605b741a7d5044b47592338c633788b0eb7",
+            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.4",
-            "psr/http-message": "~1.0"
-        },
-        "provide": {
-            "psr/http-message-implementation": "~1.0.0"
+            "php": ">=5.3.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.6",
-            "squizlabs/php_codesniffer": "^2.3.1"
+            "phpunit/phpunit": "~4.5"
         },
-        "time": "2015-08-10 20:04:20",
+        "time": "2015-10-06 16:59:57",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0-dev",
-                "dev-develop": "1.1-dev"
+                "dev-master": "1.6.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Zend\\Diactoros\\": "src/"
+            "psr-0": {
+                "org\\bovigo\\vfs\\": "src/main/php"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-2-Clause"
+            "BSD-3-Clause"
         ],
-        "description": "PSR HTTP Message implementations",
-        "homepage": "https://github.com/zendframework/zend-diactoros",
-        "keywords": [
-            "http",
-            "psr",
-            "psr-7"
-        ]
+        "authors": [
+            {
+                "name": "Frank Kleine",
+                "homepage": "http://frankkleine.de/",
+                "role": "Developer"
+            }
+        ],
+        "description": "Virtual file system to mock the real file system in unit tests.",
+        "homepage": "http://vfs.bovigo.org/"
     },
     {
-        "name": "zendframework/zend-stdlib",
-        "version": "2.7.3",
-        "version_normalized": "2.7.3.0",
+        "name": "phpdocumentor/reflection-docblock",
+        "version": "2.0.4",
+        "version_normalized": "2.0.4.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/zendframework/zend-stdlib.git",
-            "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc"
+            "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
-            "reference": "8ac0c77ff567fcf49b58689ee3bfa7595be102bc",
+            "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
+            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.5",
-            "zendframework/zend-hydrator": "~1.0"
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "athletic/athletic": "~0.1",
-            "fabpot/php-cs-fixer": "1.7.*",
-            "phpunit/phpunit": "~4.0",
-            "zendframework/zend-config": "~2.5",
-            "zendframework/zend-eventmanager": "~2.5",
-            "zendframework/zend-filter": "~2.5",
-            "zendframework/zend-inputfilter": "~2.5",
-            "zendframework/zend-serializer": "~2.5",
-            "zendframework/zend-servicemanager": "~2.5"
+            "phpunit/phpunit": "~4.0"
         },
         "suggest": {
-            "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
-            "zendframework/zend-filter": "To support naming strategy hydrator usage",
-            "zendframework/zend-serializer": "Zend\\Serializer component",
-            "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+            "dflydev/markdown": "~1.0",
+            "erusev/parsedown": "~1.0"
         },
-        "time": "2015-09-25 04:06:33",
+        "time": "2015-02-03 12:10:50",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev",
-                "dev-develop": "2.8-dev"
+                "dev-master": "2.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Zend\\Stdlib\\": "src/"
+            "psr-0": {
+                "phpDocumentor": [
+                    "src/"
+                ]
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
-        "homepage": "https://github.com/zendframework/zend-stdlib",
-        "keywords": [
-            "stdlib",
-            "zf2"
+        "authors": [
+            {
+                "name": "Mike van Riel",
+                "email": "mike.vanriel@naenius.com"
+            }
         ]
     },
     {
-        "name": "zendframework/zend-hydrator",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
+        "name": "phpunit/php-token-stream",
+        "version": "1.4.8",
+        "version_normalized": "1.4.8.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/zendframework/zend-hydrator.git",
-            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f"
+            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/f3ed8b833355140350bbed98d8a7b8b66875903f",
-            "reference": "f3ed8b833355140350bbed98d8a7b8b66875903f",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.5",
-            "zendframework/zend-stdlib": "^2.5.1"
+            "ext-tokenizer": "*",
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0",
-            "squizlabs/php_codesniffer": "^2.0@dev",
-            "zendframework/zend-eventmanager": "^2.5.1",
-            "zendframework/zend-filter": "^2.5.1",
-            "zendframework/zend-inputfilter": "^2.5.1",
-            "zendframework/zend-serializer": "^2.5.1",
-            "zendframework/zend-servicemanager": "^2.5.1"
+            "phpunit/phpunit": "~4.2"
         },
-        "suggest": {
-            "zendframework/zend-eventmanager": "^2.5.1, to support aggregate hydrator usage",
-            "zendframework/zend-filter": "^2.5.1, to support naming strategy hydrator usage",
-            "zendframework/zend-serializer": "^2.5.1, to use the SerializableStrategy",
-            "zendframework/zend-servicemanager": "^2.5.1, to support hydrator plugin manager usage"
-        },
-        "time": "2015-09-17 14:06:43",
+        "time": "2015-09-15 10:49:45",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0-dev",
-                "dev-develop": "1.1-dev"
+                "dev-master": "1.4-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Zend\\Hydrator\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
             "BSD-3-Clause"
         ],
-        "homepage": "https://github.com/zendframework/zend-hydrator",
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
+            }
+        ],
+        "description": "Wrapper around PHP's tokenizer extension.",
+        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
         "keywords": [
-            "hydrator",
-            "zf2"
+            "tokenizer"
         ]
     },
     {
-        "name": "zendframework/zend-escaper",
-        "version": "2.5.1",
-        "version_normalized": "2.5.1.0",
+        "name": "sebastian/version",
+        "version": "1.0.6",
+        "version_normalized": "1.0.6.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/zendframework/zend-escaper.git",
-            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73"
+            "url": "https://github.com/sebastianbergmann/version.git",
+            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
-            "reference": "a4b227d8a477f4e7e9073f8e0a7ae7dbd3104a73",
+            "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
             "shasum": ""
         },
-        "require": {
-            "php": ">=5.3.23"
-        },
-        "require-dev": {
-            "fabpot/php-cs-fixer": "1.7.*",
-            "phpunit/phpunit": "~4.0"
-        },
-        "time": "2015-06-03 14:05:37",
+        "time": "2015-06-21 13:59:46",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.5-dev",
-                "dev-develop": "2.6-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Zend\\Escaper\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
             "BSD-3-Clause"
         ],
-        "homepage": "https://github.com/zendframework/zend-escaper",
-        "keywords": [
-            "escaper",
-            "zf2"
-        ]
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+        "homepage": "https://github.com/sebastianbergmann/version"
     },
     {
-        "name": "zendframework/zend-feed",
-        "version": "2.5.2",
-        "version_normalized": "2.5.2.0",
+        "name": "sebastian/recursion-context",
+        "version": "1.0.1",
+        "version_normalized": "1.0.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/zendframework/zend-feed.git",
-            "reference": "0661345b82b51428619e05d3aadd3de65b57fa54"
+            "url": "https://github.com/sebastianbergmann/recursion-context.git",
+            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/0661345b82b51428619e05d3aadd3de65b57fa54",
-            "reference": "0661345b82b51428619e05d3aadd3de65b57fa54",
+            "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
+            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.5",
-            "zendframework/zend-escaper": "~2.5",
-            "zendframework/zend-stdlib": "~2.5"
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "fabpot/php-cs-fixer": "1.7.*",
-            "phpunit/phpunit": "~4.0",
-            "zendframework/zend-cache": "~2.5",
-            "zendframework/zend-db": "~2.5",
-            "zendframework/zend-http": "~2.5",
-            "zendframework/zend-servicemanager": "~2.5",
-            "zendframework/zend-validator": "~2.5"
-        },
-        "suggest": {
-            "zendframework/zend-cache": "Zend\\Cache component",
-            "zendframework/zend-db": "Zend\\Db component",
-            "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
-            "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations",
-            "zendframework/zend-validator": "Zend\\Validator component"
+            "phpunit/phpunit": "~4.4"
         },
-        "time": "2015-08-04 21:39:18",
+        "time": "2015-06-21 08:04:50",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.5-dev",
-                "dev-develop": "2.6-dev"
+                "dev-master": "1.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Zend\\Feed\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
             "BSD-3-Clause"
         ],
-        "description": "provides functionality for consuming RSS and Atom feeds",
-        "homepage": "https://github.com/zendframework/zend-feed",
-        "keywords": [
-            "feed",
-            "zf2"
-        ]
+        "authors": [
+            {
+                "name": "Jeff Welch",
+                "email": "whatthejeff@gmail.com"
+            },
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
+            },
+            {
+                "name": "Adam Harvey",
+                "email": "aharvey@php.net"
+            }
+        ],
+        "description": "Provides functionality to recursively process PHP variables",
+        "homepage": "http://www.github.com/sebastianbergmann/recursion-context"
     },
     {
-        "name": "guzzlehttp/guzzle",
-        "version": "6.1.0",
-        "version_normalized": "6.1.0.0",
+        "name": "sebastian/exporter",
+        "version": "1.2.1",
+        "version_normalized": "1.2.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/guzzle/guzzle.git",
-            "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81"
+            "url": "https://github.com/sebastianbergmann/exporter.git",
+            "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
-            "reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
+            "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
+            "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
             "shasum": ""
         },
         "require": {
-            "guzzlehttp/promises": "~1.0",
-            "guzzlehttp/psr7": "~1.1",
-            "php": ">=5.5.0"
+            "php": ">=5.3.3",
+            "sebastian/recursion-context": "~1.0"
         },
         "require-dev": {
-            "ext-curl": "*",
-            "phpunit/phpunit": "~4.0",
-            "psr/log": "~1.0"
+            "phpunit/phpunit": "~4.4"
         },
-        "time": "2015-09-08 17:36:26",
+        "time": "2015-06-21 07:55:53",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "6.1-dev"
+                "dev-master": "1.2.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "files": [
-                "src/functions_include.php"
-            ],
-            "psr-4": {
-                "GuzzleHttp\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
+                "name": "Jeff Welch",
+                "email": "whatthejeff@gmail.com"
+            },
+            {
+                "name": "Volker Dusch",
+                "email": "github@wallbash.com"
+            },
+            {
+                "name": "Bernhard Schussek",
+                "email": "bschussek@2bepublished.at"
+            },
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
+            },
+            {
+                "name": "Adam Harvey",
+                "email": "aharvey@php.net"
             }
         ],
-        "description": "Guzzle is a PHP HTTP client library",
-        "homepage": "http://guzzlephp.org/",
+        "description": "Provides the functionality to export PHP variables for visualization",
+        "homepage": "http://www.github.com/sebastianbergmann/exporter",
         "keywords": [
-            "client",
-            "curl",
-            "framework",
-            "http",
-            "http client",
-            "rest",
-            "web service"
+            "export",
+            "exporter"
         ]
     },
     {
-        "name": "fabpot/goutte",
-        "version": "v3.1.1",
-        "version_normalized": "3.1.1.0",
+        "name": "sebastian/environment",
+        "version": "1.3.2",
+        "version_normalized": "1.3.2.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/FriendsOfPHP/Goutte.git",
-            "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc"
+            "url": "https://github.com/sebastianbergmann/environment.git",
+            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
-            "reference": "751a3dc5c4d86ec3e97c9f27133ef9694d9243cc",
+            "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
+            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
             "shasum": ""
         },
         "require": {
-            "guzzlehttp/guzzle": "^6.0",
-            "php": ">=5.5.0",
-            "symfony/browser-kit": "~2.1",
-            "symfony/css-selector": "~2.1",
-            "symfony/dom-crawler": "~2.1"
+            "php": ">=5.3.3"
         },
-        "time": "2015-08-29 16:16:56",
-        "type": "application",
+        "require-dev": {
+            "phpunit/phpunit": "~4.4"
+        },
+        "time": "2015-08-03 06:14:51",
+        "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "3.1-dev"
+                "dev-master": "1.3.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Goutte\\": "Goutte"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
             }
         ],
-        "description": "A simple PHP Web Scraper",
-        "homepage": "https://github.com/FriendsOfPHP/Goutte",
+        "description": "Provides functionality to handle HHVM/PHP environments",
+        "homepage": "http://www.github.com/sebastianbergmann/environment",
         "keywords": [
-            "scraper"
+            "Xdebug",
+            "environment",
+            "hhvm"
         ]
     },
     {
-        "name": "behat/mink",
-        "version": "v1.7.0",
-        "version_normalized": "1.7.0.0",
+        "name": "sebastian/diff",
+        "version": "1.3.0",
+        "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/minkphp/Mink.git",
-            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf"
+            "url": "https://github.com/sebastianbergmann/diff.git",
+            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/Mink/zipball/6c129030ec2cc029905cf969a56ca8f087b2dfdf",
-            "reference": "6c129030ec2cc029905cf969a56ca8f087b2dfdf",
+            "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
+            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.1",
-            "symfony/css-selector": "~2.1"
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "symfony/phpunit-bridge": "~2.7"
+            "phpunit/phpunit": "~4.2"
         },
-        "suggest": {
-            "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
-            "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
-            "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
-            "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)"
-        },
-        "time": "2015-09-20 20:24:03",
+        "time": "2015-02-22 15:13:53",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.7.x-dev"
+                "dev-master": "1.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
+                "name": "Kore Nordmann",
+                "email": "mail@kore-nordmann.de"
+            },
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
             }
         ],
-        "description": "Browser controller/emulator abstraction for PHP",
-        "homepage": "http://mink.behat.org/",
+        "description": "Diff implementation",
+        "homepage": "http://www.github.com/sebastianbergmann/diff",
         "keywords": [
-            "browser",
-            "testing",
-            "web"
+            "diff"
         ]
     },
     {
-        "name": "behat/mink-browserkit-driver",
-        "version": "v1.3.0",
-        "version_normalized": "1.3.0.0",
+        "name": "sebastian/comparator",
+        "version": "1.2.0",
+        "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
-            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201"
+            "url": "https://github.com/sebastianbergmann/comparator.git",
+            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/da47df1593dac132f04d24e7277ef40d33d9f201",
-            "reference": "da47df1593dac132f04d24e7277ef40d33d9f201",
+            "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
+            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
             "shasum": ""
         },
         "require": {
-            "behat/mink": "~1.7@dev",
-            "php": ">=5.3.6",
-            "symfony/browser-kit": "~2.3",
-            "symfony/dom-crawler": "~2.3"
+            "php": ">=5.3.3",
+            "sebastian/diff": "~1.2",
+            "sebastian/exporter": "~1.2"
         },
         "require-dev": {
-            "silex/silex": "~1.2",
-            "symfony/phpunit-bridge": "~2.7"
+            "phpunit/phpunit": "~4.4"
         },
-        "time": "2015-09-21 20:56:13",
-        "type": "mink-driver",
+        "time": "2015-07-26 15:48:44",
+        "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.3.x-dev"
+                "dev-master": "1.2.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\Driver\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
+                "name": "Jeff Welch",
+                "email": "whatthejeff@gmail.com"
+            },
+            {
+                "name": "Volker Dusch",
+                "email": "github@wallbash.com"
+            },
+            {
+                "name": "Bernhard Schussek",
+                "email": "bschussek@2bepublished.at"
+            },
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
             }
         ],
-        "description": "Symfony2 BrowserKit driver for Mink framework",
-        "homepage": "http://mink.behat.org/",
+        "description": "Provides the functionality to compare PHP values for equality",
+        "homepage": "http://www.github.com/sebastianbergmann/comparator",
         "keywords": [
-            "Mink",
-            "Symfony2",
-            "browser",
-            "testing"
+            "comparator",
+            "compare",
+            "equality"
         ]
     },
     {
-        "name": "behat/mink-goutte-driver",
-        "version": "v1.2.0",
-        "version_normalized": "1.2.0.0",
+        "name": "phpunit/php-text-template",
+        "version": "1.2.1",
+        "version_normalized": "1.2.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/minkphp/MinkGoutteDriver.git",
-            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f"
+            "url": "https://github.com/sebastianbergmann/php-text-template.git",
+            "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/c8e254f127d6f2242b994afd4339fb62d471df3f",
-            "reference": "c8e254f127d6f2242b994afd4339fb62d471df3f",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+            "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
             "shasum": ""
         },
         "require": {
-            "behat/mink": "~1.6@dev",
-            "behat/mink-browserkit-driver": "~1.2@dev",
-            "fabpot/goutte": "~1.0.4|~2.0|~3.1",
-            "php": ">=5.3.1"
-        },
-        "require-dev": {
-            "symfony/phpunit-bridge": "~2.7"
-        },
-        "time": "2015-09-21 21:31:11",
-        "type": "mink-driver",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.2.x-dev"
-            }
+            "php": ">=5.3.3"
         },
+        "time": "2015-06-21 13:50:34",
+        "type": "library",
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Behat\\Mink\\Driver\\": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
             }
         ],
-        "description": "Goutte driver for Mink framework",
-        "homepage": "http://mink.behat.org/",
+        "description": "Simple template engine.",
+        "homepage": "https://github.com/sebastianbergmann/php-text-template/",
         "keywords": [
-            "browser",
-            "goutte",
-            "headless",
-            "testing"
+            "template"
         ]
     },
     {
-        "name": "mikey179/vfsStream",
-        "version": "v1.6.0",
-        "version_normalized": "1.6.0.0",
+        "name": "doctrine/instantiator",
+        "version": "1.0.5",
+        "version_normalized": "1.0.5.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/mikey179/vfsStream.git",
-            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7"
+            "url": "https://github.com/doctrine/instantiator.git",
+            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/73bcb605b741a7d5044b47592338c633788b0eb7",
-            "reference": "73bcb605b741a7d5044b47592338c633788b0eb7",
+            "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.0"
+            "php": ">=5.3,<8.0-DEV"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.5"
+            "athletic/athletic": "~0.1.8",
+            "ext-pdo": "*",
+            "ext-phar": "*",
+            "phpunit/phpunit": "~4.0",
+            "squizlabs/php_codesniffer": "~2.0"
         },
-        "time": "2015-10-06 16:59:57",
+        "time": "2015-06-14 21:17:01",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.6.x-dev"
+                "dev-master": "1.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "org\\bovigo\\vfs\\": "src/main/php"
+            "psr-4": {
+                "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Frank Kleine",
-                "homepage": "http://frankkleine.de/",
-                "role": "Developer"
+                "name": "Marco Pivetta",
+                "email": "ocramius@gmail.com",
+                "homepage": "http://ocramius.github.com/"
             }
         ],
-        "description": "Virtual file system to mock the real file system in unit tests.",
-        "homepage": "http://vfs.bovigo.org/"
+        "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+        "homepage": "https://github.com/doctrine/instantiator",
+        "keywords": [
+            "constructor",
+            "instantiate"
+        ]
     },
     {
-        "name": "phpdocumentor/reflection-docblock",
-        "version": "2.0.4",
-        "version_normalized": "2.0.4.0",
+        "name": "phpunit/phpunit-mock-objects",
+        "version": "2.3.8",
+        "version_normalized": "2.3.8.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
+            "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
-            "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
+            "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "doctrine/instantiator": "^1.0.2",
+            "php": ">=5.3.3",
+            "phpunit/php-text-template": "~1.2",
+            "sebastian/exporter": "~1.2"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0"
+            "phpunit/phpunit": "~4.4"
         },
         "suggest": {
-            "dflydev/markdown": "~1.0",
-            "erusev/parsedown": "~1.0"
+            "ext-soap": "*"
         },
-        "time": "2015-02-03 12:10:50",
+        "time": "2015-10-02 06:51:40",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.0.x-dev"
+                "dev-master": "2.3.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "phpDocumentor": [
-                    "src/"
-                ]
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Mike van Riel",
-                "email": "mike.vanriel@naenius.com"
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
             }
+        ],
+        "description": "Mock Object library for PHPUnit",
+        "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+        "keywords": [
+            "mock",
+            "xunit"
         ]
     },
     {
-        "name": "phpunit/php-token-stream",
-        "version": "1.4.8",
-        "version_normalized": "1.4.8.0",
+        "name": "phpunit/php-timer",
+        "version": "1.0.7",
+        "version_normalized": "1.0.7.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
+            "url": "https://github.com/sebastianbergmann/php-timer.git",
+            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
-            "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
+            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
             "shasum": ""
         },
         "require": {
-            "ext-tokenizer": "*",
             "php": ">=5.3.3"
         },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
+        "time": "2015-06-21 08:01:12",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
         },
-        "time": "2015-09-15 10:49:45",
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Utility class for timing",
+        "homepage": "https://github.com/sebastianbergmann/php-timer/",
+        "keywords": [
+            "timer"
+        ]
+    },
+    {
+        "name": "phpunit/php-file-iterator",
+        "version": "1.4.1",
+        "version_normalized": "1.4.1.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+            "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+            "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "time": "2015-06-21 13:08:43",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.4-dev"
+                "dev-master": "1.4.x-dev"
             }
         },
         "installation-source": "dist",
@@ -1833,32 +1655,56 @@
         "authors": [
             {
                 "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
             }
         ],
-        "description": "Wrapper around PHP's tokenizer extension.",
-        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+        "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+        "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
         "keywords": [
-            "tokenizer"
+            "filesystem",
+            "iterator"
         ]
     },
     {
-        "name": "sebastian/version",
-        "version": "1.0.6",
-        "version_normalized": "1.0.6.0",
+        "name": "phpunit/php-code-coverage",
+        "version": "2.2.4",
+        "version_normalized": "2.2.4.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/version.git",
-            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
+            "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
-            "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
             "shasum": ""
         },
-        "time": "2015-06-21 13:59:46",
+        "require": {
+            "php": ">=5.3.3",
+            "phpunit/php-file-iterator": "~1.3",
+            "phpunit/php-text-template": "~1.2",
+            "phpunit/php-token-stream": "~1.3",
+            "sebastian/environment": "^1.3.2",
+            "sebastian/version": "~1.0"
+        },
+        "require-dev": {
+            "ext-xdebug": ">=2.1.4",
+            "phpunit/phpunit": "~4"
+        },
+        "suggest": {
+            "ext-dom": "*",
+            "ext-xdebug": ">=2.2.1",
+            "ext-xmlwriter": "*"
+        },
+        "time": "2015-10-06 15:47:00",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.2.x-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
             "classmap": [
@@ -1872,38 +1718,435 @@
         "authors": [
             {
                 "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
+                "email": "sb@sebastian-bergmann.de",
                 "role": "lead"
             }
         ],
-        "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-        "homepage": "https://github.com/sebastianbergmann/version"
+        "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+        "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+        "keywords": [
+            "coverage",
+            "testing",
+            "xunit"
+        ]
+    },
+    {
+        "name": "phpspec/prophecy",
+        "version": "v1.5.0",
+        "version_normalized": "1.5.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/phpspec/prophecy.git",
+            "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+            "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+            "shasum": ""
+        },
+        "require": {
+            "doctrine/instantiator": "^1.0.2",
+            "phpdocumentor/reflection-docblock": "~2.0",
+            "sebastian/comparator": "~1.1"
+        },
+        "require-dev": {
+            "phpspec/phpspec": "~2.0"
+        },
+        "time": "2015-08-13 10:07:40",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.4.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Prophecy\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Konstantin Kudryashov",
+                "email": "ever.zet@gmail.com",
+                "homepage": "http://everzet.com"
+            },
+            {
+                "name": "Marcello Duarte",
+                "email": "marcello.duarte@gmail.com"
+            }
+        ],
+        "description": "Highly opinionated mocking framework for PHP 5.3+",
+        "homepage": "https://github.com/phpspec/prophecy",
+        "keywords": [
+            "Double",
+            "Dummy",
+            "fake",
+            "mock",
+            "spy",
+            "stub"
+        ]
+    },
+    {
+        "name": "jcalderonzumba/gastonjs",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/jcalderonzumba/gastonjs.git",
+            "reference": "5e231b4df98275c404e1371fc5fadd34f6a121ad"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/jcalderonzumba/gastonjs/zipball/5e231b4df98275c404e1371fc5fadd34f6a121ad",
+            "reference": "5e231b4df98275c404e1371fc5fadd34f6a121ad",
+            "shasum": ""
+        },
+        "require": {
+            "guzzlehttp/guzzle": "~5.0|~6.0",
+            "php": ">=5.4"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "~4.6",
+            "silex/silex": "~1.2",
+            "symfony/phpunit-bridge": "~2.7",
+            "symfony/process": "~2.1"
+        },
+        "time": "2015-10-07 11:40:41",
+        "type": "phantomjs-api",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.1.x-dev"
+            }
+        },
+        "installation-source": "source",
+        "autoload": {
+            "psr-4": {
+                "Zumba\\GastonJS\\": "src"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Juan Francisco Calderón Zumba",
+                "email": "juanfcz@gmail.com",
+                "homepage": "http://github.com/jcalderonzumba"
+            }
+        ],
+        "description": "PhantomJS API based server for webpage automation",
+        "homepage": "https://github.com/jcalderonzumba/gastonjs",
+        "keywords": [
+            "api",
+            "automation",
+            "browser",
+            "headless",
+            "phantomjs"
+        ]
+    },
+    {
+        "name": "jcalderonzumba/mink-phantomjs-driver",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/jcalderonzumba/MinkPhantomJSDriver.git",
+            "reference": "10d7c48c9a4129463052321b52450d98983c4332"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/jcalderonzumba/MinkPhantomJSDriver/zipball/10d7c48c9a4129463052321b52450d98983c4332",
+            "reference": "10d7c48c9a4129463052321b52450d98983c4332",
+            "shasum": ""
+        },
+        "require": {
+            "behat/mink": "~1.6",
+            "jcalderonzumba/gastonjs": "~1.0",
+            "php": ">=5.4",
+            "twig/twig": "~1.8"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "~4.6",
+            "silex/silex": "~1.2",
+            "symfony/css-selector": "~2.1",
+            "symfony/phpunit-bridge": "~2.7",
+            "symfony/process": "~2.3"
+        },
+        "time": "2015-10-05 18:24:44",
+        "type": "mink-driver",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "0.4.x-dev"
+            }
+        },
+        "installation-source": "source",
+        "autoload": {
+            "psr-4": {
+                "Zumba\\Mink\\Driver\\": "src"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Juan Francisco Calderón Zumba",
+                "email": "juanfcz@gmail.com",
+                "homepage": "http://github.com/jcalderonzumba"
+            }
+        ],
+        "description": "PhantomJS driver for Mink framework",
+        "homepage": "http://mink.behat.org/",
+        "keywords": [
+            "ajax",
+            "browser",
+            "headless",
+            "javascript",
+            "phantomjs",
+            "testing"
+        ]
+    },
+    {
+        "name": "twig/twig",
+        "version": "v1.23.1",
+        "version_normalized": "1.23.1.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/twigphp/Twig.git",
+            "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+            "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.2.7"
+        },
+        "require-dev": {
+            "symfony/debug": "~2.7",
+            "symfony/phpunit-bridge": "~2.7"
+        },
+        "time": "2015-11-05 12:49:06",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.23-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Twig_": "lib/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
+            },
+            {
+                "name": "Armin Ronacher",
+                "email": "armin.ronacher@active-4.com",
+                "role": "Project Founder"
+            },
+            {
+                "name": "Twig Team",
+                "homepage": "http://twig.sensiolabs.org/contributors",
+                "role": "Contributors"
+            }
+        ],
+        "description": "Twig, the flexible, fast, and secure template language for PHP",
+        "homepage": "http://twig.sensiolabs.org",
+        "keywords": [
+            "templating"
+        ]
+    },
+    {
+        "name": "wikimedia/composer-merge-plugin",
+        "version": "v1.3.0",
+        "version_normalized": "1.3.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/wikimedia/composer-merge-plugin.git",
+            "reference": "bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9",
+            "reference": "bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9",
+            "shasum": ""
+        },
+        "require": {
+            "composer-plugin-api": "^1.0",
+            "php": ">=5.3.2"
+        },
+        "require-dev": {
+            "composer/composer": "1.0.*@dev",
+            "jakub-onderka/php-parallel-lint": "~0.8",
+            "phpunit/phpunit": "~4.8|~5.0",
+            "squizlabs/php_codesniffer": "~2.1.0"
+        },
+        "time": "2015-11-06 20:31:16",
+        "type": "composer-plugin",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.3.x-dev"
+            },
+            "class": "Wikimedia\\Composer\\MergePlugin"
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-4": {
+                "Wikimedia\\Composer\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Bryan Davis",
+                "email": "bd808@wikimedia.org"
+            }
+        ],
+        "description": "Composer plugin to merge multiple composer.json files"
+    },
+    {
+        "name": "composer/installers",
+        "version": "v1.0.22",
+        "version_normalized": "1.0.22.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/composer/installers.git",
+            "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/composer/installers/zipball/bd9b14f094c89c8b5804a4e41edeb7853bb85046",
+            "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046",
+            "shasum": ""
+        },
+        "require": {
+            "composer-plugin-api": "1.0.0"
+        },
+        "replace": {
+            "roundcube/plugin-installer": "*",
+            "shama/baton": "*"
+        },
+        "require-dev": {
+            "composer/composer": "1.0.*@dev",
+            "phpunit/phpunit": "4.1.*"
+        },
+        "time": "2015-10-29 23:28:48",
+        "type": "composer-plugin",
+        "extra": {
+            "class": "Composer\\Installers\\Plugin",
+            "branch-alias": {
+                "dev-master": "1.0-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Composer\\Installers\\": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Kyle Robinson Young",
+                "email": "kyle@dontkry.com",
+                "homepage": "https://github.com/shama"
+            }
+        ],
+        "description": "A multi-framework Composer library installer",
+        "homepage": "http://composer.github.com/installers/",
+        "keywords": [
+            "Craft",
+            "Dolibarr",
+            "Hurad",
+            "MODX Evo",
+            "OXID",
+            "SMF",
+            "Thelia",
+            "WolfCMS",
+            "agl",
+            "aimeos",
+            "annotatecms",
+            "bitrix",
+            "cakephp",
+            "chef",
+            "codeigniter",
+            "concrete5",
+            "croogo",
+            "dokuwiki",
+            "drupal",
+            "elgg",
+            "fuelphp",
+            "grav",
+            "installer",
+            "joomla",
+            "kohana",
+            "laravel",
+            "lithium",
+            "magento",
+            "mako",
+            "mediawiki",
+            "modulework",
+            "moodle",
+            "phpbb",
+            "piwik",
+            "ppi",
+            "puppet",
+            "roundcube",
+            "shopware",
+            "silverstripe",
+            "symfony",
+            "typo3",
+            "wordpress",
+            "zend",
+            "zikula"
+        ]
     },
     {
-        "name": "sebastian/global-state",
-        "version": "1.0.0",
+        "name": "symfony/polyfill-mbstring",
+        "version": "v1.0.0",
         "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/global-state.git",
-            "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
+            "url": "https://github.com/symfony/polyfill-mbstring.git",
+            "reference": "0b6a8940385311a24e060ec1fe35680e17c74497"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
-            "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+            "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497",
+            "reference": "0b6a8940385311a24e060ec1fe35680e17c74497",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "require-dev": {
-            "phpunit/phpunit": "~4.2"
-        },
-        "suggest": {
-            "ext-uopz": "*"
-        },
-        "time": "2014-10-06 09:23:50",
+        "time": "2015-11-04 20:28:58",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1912,452 +2155,418 @@
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "psr-4": {
+                "Symfony\\Polyfill\\Mbstring\\": ""
+            },
+            "files": [
+                "bootstrap.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
+                "name": "Nicolas Grekas",
+                "email": "p@tchwork.com"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Snapshotting of global state",
-        "homepage": "http://www.github.com/sebastianbergmann/global-state",
+        "description": "Symfony polyfill for the Mbstring extension",
+        "homepage": "https://symfony.com",
         "keywords": [
-            "global state"
+            "compatibility",
+            "mbstring",
+            "polyfill",
+            "portable",
+            "shim"
         ]
     },
     {
-        "name": "sebastian/recursion-context",
-        "version": "1.0.1",
-        "version_normalized": "1.0.1.0",
+        "name": "symfony/polyfill-php54",
+        "version": "v1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/recursion-context.git",
-            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
+            "url": "https://github.com/symfony/polyfill-php54.git",
+            "reference": "2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
-            "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
+            "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc",
+            "reference": "2c9f6d98eb30dc04fe0b06f9cc92a55acea5bdcc",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-06-21 08:04:50",
+        "time": "2015-11-04 20:28:58",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "1.0-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
+            "psr-4": {
+                "Symfony\\Polyfill\\Php54\\": ""
+            },
+            "files": [
+                "bootstrap.php"
+            ],
             "classmap": [
-                "src/"
+                "Resources/stubs"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Jeff Welch",
-                "email": "whatthejeff@gmail.com"
-            },
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
+                "name": "Nicolas Grekas",
+                "email": "p@tchwork.com"
             },
             {
-                "name": "Adam Harvey",
-                "email": "aharvey@php.net"
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Provides functionality to recursively process PHP variables",
-        "homepage": "http://www.github.com/sebastianbergmann/recursion-context"
+        "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions",
+        "homepage": "https://symfony.com",
+        "keywords": [
+            "compatibility",
+            "polyfill",
+            "portable",
+            "shim"
+        ]
     },
     {
-        "name": "sebastian/exporter",
-        "version": "1.2.1",
-        "version_normalized": "1.2.1.0",
+        "name": "ircmaxell/password-compat",
+        "version": "v1.0.4",
+        "version_normalized": "1.0.4.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/exporter.git",
-            "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
+            "url": "https://github.com/ircmaxell/password_compat.git",
+            "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
-            "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
+            "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c",
+            "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c",
             "shasum": ""
         },
-        "require": {
-            "php": ">=5.3.3",
-            "sebastian/recursion-context": "~1.0"
-        },
         "require-dev": {
-            "phpunit/phpunit": "~4.4"
+            "phpunit/phpunit": "4.*"
         },
-        "time": "2015-06-21 07:55:53",
+        "time": "2014-11-20 16:49:30",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.2.x-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "files": [
+                "lib/password.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Jeff Welch",
-                "email": "whatthejeff@gmail.com"
-            },
-            {
-                "name": "Volker Dusch",
-                "email": "github@wallbash.com"
-            },
-            {
-                "name": "Bernhard Schussek",
-                "email": "bschussek@2bepublished.at"
-            },
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            },
-            {
-                "name": "Adam Harvey",
-                "email": "aharvey@php.net"
+                "name": "Anthony Ferrara",
+                "email": "ircmaxell@php.net",
+                "homepage": "http://blog.ircmaxell.com"
             }
         ],
-        "description": "Provides the functionality to export PHP variables for visualization",
-        "homepage": "http://www.github.com/sebastianbergmann/exporter",
+        "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
+        "homepage": "https://github.com/ircmaxell/password_compat",
         "keywords": [
-            "export",
-            "exporter"
+            "hashing",
+            "password"
         ]
     },
     {
-        "name": "sebastian/environment",
-        "version": "1.3.2",
-        "version_normalized": "1.3.2.0",
+        "name": "symfony/polyfill-php55",
+        "version": "v1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/environment.git",
-            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
+            "url": "https://github.com/symfony/polyfill-php55.git",
+            "reference": "3adc962a6250c02adb508e85ecfa6fcfee9eec47"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
-            "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
+            "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/3adc962a6250c02adb508e85ecfa6fcfee9eec47",
+            "reference": "3adc962a6250c02adb508e85ecfa6fcfee9eec47",
             "shasum": ""
         },
         "require": {
+            "ircmaxell/password-compat": "~1.0",
             "php": ">=5.3.3"
         },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
-        },
-        "time": "2015-08-03 06:14:51",
+        "time": "2015-11-04 20:28:58",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.3.x-dev"
+                "dev-master": "1.0-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "psr-4": {
+                "Symfony\\Polyfill\\Php55\\": ""
+            },
+            "files": [
+                "bootstrap.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
+                "name": "Nicolas Grekas",
+                "email": "p@tchwork.com"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Provides functionality to handle HHVM/PHP environments",
-        "homepage": "http://www.github.com/sebastianbergmann/environment",
+        "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions",
+        "homepage": "https://symfony.com",
         "keywords": [
-            "Xdebug",
-            "environment",
-            "hhvm"
+            "compatibility",
+            "polyfill",
+            "portable",
+            "shim"
         ]
     },
     {
-        "name": "sebastian/diff",
-        "version": "1.3.0",
-        "version_normalized": "1.3.0.0",
+        "name": "egulias/email-validator",
+        "version": "1.2.11",
+        "version_normalized": "1.2.11.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/diff.git",
-            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
+            "url": "https://github.com/egulias/EmailValidator.git",
+            "reference": "04c6cdf9871140b80947c87db7770c0dd9c75c7c"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
-            "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
+            "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/04c6cdf9871140b80947c87db7770c0dd9c75c7c",
+            "reference": "04c6cdf9871140b80947c87db7770c0dd9c75c7c",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "doctrine/lexer": "~1.0,>=1.0.1",
+            "php": ">= 5.3.3"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.2"
+            "phpunit/phpunit": "~4.4",
+            "satooshi/php-coveralls": "dev-master"
         },
-        "time": "2015-02-22 15:13:53",
+        "time": "2015-11-11 03:28:32",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.3-dev"
+                "dev-master": "2.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Egulias\\": "src/"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Kore Nordmann",
-                "email": "mail@kore-nordmann.de"
-            },
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
+                "name": "Eduardo Gulias Davis"
             }
         ],
-        "description": "Diff implementation",
-        "homepage": "http://www.github.com/sebastianbergmann/diff",
+        "description": "A library for validating emails",
+        "homepage": "https://github.com/egulias/EmailValidator",
         "keywords": [
-            "diff"
+            "email",
+            "emailvalidation",
+            "emailvalidator",
+            "validation",
+            "validator"
         ]
     },
     {
-        "name": "sebastian/comparator",
+        "name": "composer/semver",
         "version": "1.2.0",
         "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/comparator.git",
-            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
+            "url": "https://github.com/composer/semver.git",
+            "reference": "0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
-            "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
+            "url": "https://api.github.com/repos/composer/semver/zipball/0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3",
+            "reference": "0faeb6e433f6b352f0dc55ec1faf5c6b605a35d3",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "sebastian/diff": "~1.2",
-            "sebastian/exporter": "~1.2"
+            "php": "^5.3.2 || ^7.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.4"
+            "phpunit/phpunit": "^4.5 || ^5.0.5",
+            "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
         },
-        "time": "2015-07-26 15:48:44",
+        "time": "2015-11-10 11:17:42",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.2.x-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Jeff Welch",
-                "email": "whatthejeff@gmail.com"
-            },
-            {
-                "name": "Volker Dusch",
-                "email": "github@wallbash.com"
-            },
-            {
-                "name": "Bernhard Schussek",
-                "email": "bschussek@2bepublished.at"
-            },
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de"
-            }
-        ],
-        "description": "Provides the functionality to compare PHP values for equality",
-        "homepage": "http://www.github.com/sebastianbergmann/comparator",
-        "keywords": [
-            "comparator",
-            "compare",
-            "equality"
-        ]
-    },
-    {
-        "name": "phpunit/php-text-template",
-        "version": "1.2.1",
-        "version_normalized": "1.2.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-text-template.git",
-            "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-            "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
+                "dev-master": "1.x-dev"
+            }
         },
-        "time": "2015-06-21 13:50:34",
-        "type": "library",
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-4": {
+                "Composer\\Semver\\": "src"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
+                "name": "Nils Adermann",
+                "email": "naderman@naderman.de",
+                "homepage": "http://www.naderman.de"
+            },
+            {
+                "name": "Jordi Boggiano",
+                "email": "j.boggiano@seld.be",
+                "homepage": "http://seld.be"
+            },
+            {
+                "name": "Rob Bast",
+                "email": "rob.bast@gmail.com",
+                "homepage": "http://robbast.nl"
             }
         ],
-        "description": "Simple template engine.",
-        "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+        "description": "Semver library that offers utilities, version constraint parsing and validation.",
         "keywords": [
-            "template"
+            "semantic",
+            "semver",
+            "validation",
+            "versioning"
         ]
     },
     {
-        "name": "doctrine/instantiator",
-        "version": "1.0.5",
-        "version_normalized": "1.0.5.0",
+        "name": "sebastian/global-state",
+        "version": "1.1.1",
+        "version_normalized": "1.1.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/instantiator.git",
-            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+            "url": "https://github.com/sebastianbergmann/global-state.git",
+            "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
-            "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+            "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+            "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3,<8.0-DEV"
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "athletic/athletic": "~0.1.8",
-            "ext-pdo": "*",
-            "ext-phar": "*",
-            "phpunit/phpunit": "~4.0",
-            "squizlabs/php_codesniffer": "~2.0"
+            "phpunit/phpunit": "~4.2"
         },
-        "time": "2015-06-14 21:17:01",
+        "suggest": {
+            "ext-uopz": "*"
+        },
+        "time": "2015-10-12 03:26:01",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "1.0-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Marco Pivetta",
-                "email": "ocramius@gmail.com",
-                "homepage": "http://ocramius.github.com/"
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de"
             }
         ],
-        "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
-        "homepage": "https://github.com/doctrine/instantiator",
+        "description": "Snapshotting of global state",
+        "homepage": "http://www.github.com/sebastianbergmann/global-state",
         "keywords": [
-            "constructor",
-            "instantiate"
+            "global state"
         ]
     },
     {
-        "name": "phpunit/phpunit-mock-objects",
-        "version": "2.3.8",
-        "version_normalized": "2.3.8.0",
+        "name": "phpunit/phpunit",
+        "version": "4.8.18",
+        "version_normalized": "4.8.18.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
+            "url": "https://github.com/sebastianbergmann/phpunit.git",
+            "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
-            "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+            "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
+            "reference": "fa33d4ad96481b91df343d83e8c8aabed6b1dfd3",
             "shasum": ""
         },
         "require": {
-            "doctrine/instantiator": "^1.0.2",
+            "ext-dom": "*",
+            "ext-json": "*",
+            "ext-pcre": "*",
+            "ext-reflection": "*",
+            "ext-spl": "*",
             "php": ">=5.3.3",
+            "phpspec/prophecy": "^1.3.1",
+            "phpunit/php-code-coverage": "~2.1",
+            "phpunit/php-file-iterator": "~1.4",
             "phpunit/php-text-template": "~1.2",
-            "sebastian/exporter": "~1.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.4"
+            "phpunit/php-timer": ">=1.0.6",
+            "phpunit/phpunit-mock-objects": "~2.3",
+            "sebastian/comparator": "~1.1",
+            "sebastian/diff": "~1.2",
+            "sebastian/environment": "~1.3",
+            "sebastian/exporter": "~1.2",
+            "sebastian/global-state": "~1.0",
+            "sebastian/version": "~1.0",
+            "symfony/yaml": "~2.1|~3.0"
         },
         "suggest": {
-            "ext-soap": "*"
+            "phpunit/php-invoker": "~1.1"
         },
-        "time": "2015-10-02 06:51:40",
+        "time": "2015-11-11 11:32:49",
+        "bin": [
+            "phpunit"
+        ],
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.3.x-dev"
+                "dev-master": "4.8.x-dev"
             }
         },
         "installation-source": "dist",
@@ -2373,208 +2582,255 @@
         "authors": [
             {
                 "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
+                "email": "sebastian@phpunit.de",
                 "role": "lead"
             }
         ],
-        "description": "Mock Object library for PHPUnit",
-        "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+        "description": "The PHP Unit Testing framework.",
+        "homepage": "https://phpunit.de/",
         "keywords": [
-            "mock",
+            "phpunit",
+            "testing",
             "xunit"
         ]
     },
     {
-        "name": "phpunit/php-timer",
-        "version": "1.0.7",
-        "version_normalized": "1.0.7.0",
+        "name": "doctrine/cache",
+        "version": "v1.5.1",
+        "version_normalized": "1.5.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-timer.git",
-            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
+            "url": "https://github.com/doctrine/cache.git",
+            "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
-            "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
+            "url": "https://api.github.com/repos/doctrine/cache/zipball/2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
+            "reference": "2b9cec5a5e722010cbebc91713d4c11eaa064d5e",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.3.2"
         },
-        "time": "2015-06-21 08:01:12",
+        "conflict": {
+            "doctrine/common": ">2.2,<2.4"
+        },
+        "require-dev": {
+            "phpunit/phpunit": ">=3.7",
+            "predis/predis": "~1.0",
+            "satooshi/php-coveralls": "~0.6"
+        },
+        "time": "2015-11-02 18:35:48",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.5.x-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-4": {
+                "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Roman Borschel",
+                "email": "roman@code-factory.org"
+            },
+            {
+                "name": "Benjamin Eberlei",
+                "email": "kontakt@beberlei.de"
+            },
+            {
+                "name": "Guilherme Blanco",
+                "email": "guilhermeblanco@gmail.com"
+            },
+            {
+                "name": "Jonathan Wage",
+                "email": "jonwage@gmail.com"
+            },
+            {
+                "name": "Johannes Schmitt",
+                "email": "schmittjoh@gmail.com"
             }
         ],
-        "description": "Utility class for timing",
-        "homepage": "https://github.com/sebastianbergmann/php-timer/",
+        "description": "Caching library offering an object-oriented API for many cache backends",
+        "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "timer"
+            "cache",
+            "caching"
         ]
     },
     {
-        "name": "phpunit/php-file-iterator",
-        "version": "1.4.1",
-        "version_normalized": "1.4.1.0",
+        "name": "doctrine/inflector",
+        "version": "v1.1.0",
+        "version_normalized": "1.1.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-            "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
+            "url": "https://github.com/doctrine/inflector.git",
+            "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
-            "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+            "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+            "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.3.2"
         },
-        "time": "2015-06-21 13:08:43",
+        "require-dev": {
+            "phpunit/phpunit": "4.*"
+        },
+        "time": "2015-11-06 14:35:42",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.4.x-dev"
+                "dev-master": "1.1.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Doctrine\\Common\\Inflector\\": "lib/"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Roman Borschel",
+                "email": "roman@code-factory.org"
+            },
+            {
+                "name": "Benjamin Eberlei",
+                "email": "kontakt@beberlei.de"
+            },
+            {
+                "name": "Guilherme Blanco",
+                "email": "guilhermeblanco@gmail.com"
+            },
+            {
+                "name": "Jonathan Wage",
+                "email": "jonwage@gmail.com"
+            },
+            {
+                "name": "Johannes Schmitt",
+                "email": "schmittjoh@gmail.com"
             }
         ],
-        "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-        "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+        "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+        "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "filesystem",
-            "iterator"
+            "inflection",
+            "pluralize",
+            "singularize",
+            "string"
         ]
     },
     {
-        "name": "phpunit/php-code-coverage",
-        "version": "2.2.4",
-        "version_normalized": "2.2.4.0",
+        "name": "zendframework/zend-stdlib",
+        "version": "2.7.4",
+        "version_normalized": "2.7.4.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
+            "url": "https://github.com/zendframework/zend-stdlib.git",
+            "reference": "cae029346a33663b998507f94962eb27de060683"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
-            "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+            "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cae029346a33663b998507f94962eb27de060683",
+            "reference": "cae029346a33663b998507f94962eb27de060683",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "phpunit/php-file-iterator": "~1.3",
-            "phpunit/php-text-template": "~1.2",
-            "phpunit/php-token-stream": "~1.3",
-            "sebastian/environment": "^1.3.2",
-            "sebastian/version": "~1.0"
+            "php": ">=5.5",
+            "zendframework/zend-hydrator": "~1.0"
         },
         "require-dev": {
-            "ext-xdebug": ">=2.1.4",
-            "phpunit/phpunit": "~4"
+            "athletic/athletic": "~0.1",
+            "fabpot/php-cs-fixer": "1.7.*",
+            "phpunit/phpunit": "~4.0",
+            "zendframework/zend-config": "~2.5",
+            "zendframework/zend-eventmanager": "~2.5",
+            "zendframework/zend-filter": "~2.5",
+            "zendframework/zend-inputfilter": "~2.5",
+            "zendframework/zend-serializer": "~2.5",
+            "zendframework/zend-servicemanager": "~2.5"
         },
         "suggest": {
-            "ext-dom": "*",
-            "ext-xdebug": ">=2.2.1",
-            "ext-xmlwriter": "*"
+            "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+            "zendframework/zend-filter": "To support naming strategy hydrator usage",
+            "zendframework/zend-serializer": "Zend\\Serializer component",
+            "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
         },
-        "time": "2015-10-06 15:47:00",
+        "time": "2015-10-15 15:57:32",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.2.x-dev"
+                "dev-master": "2.7-dev",
+                "dev-develop": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-4": {
+                "Zend\\Stdlib\\": "src/"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
             "BSD-3-Clause"
         ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
-        "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+        "homepage": "https://github.com/zendframework/zend-stdlib",
         "keywords": [
-            "coverage",
-            "testing",
-            "xunit"
+            "stdlib",
+            "zf2"
         ]
     },
     {
-        "name": "phpspec/prophecy",
-        "version": "v1.5.0",
-        "version_normalized": "1.5.0.0",
+        "name": "guzzlehttp/promises",
+        "version": "1.0.3",
+        "version_normalized": "1.0.3.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/phpspec/prophecy.git",
-            "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
+            "url": "https://github.com/guzzle/promises.git",
+            "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
-            "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+            "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea",
+            "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea",
             "shasum": ""
         },
         "require": {
-            "doctrine/instantiator": "^1.0.2",
-            "phpdocumentor/reflection-docblock": "~2.0",
-            "sebastian/comparator": "~1.1"
+            "php": ">=5.5.0"
         },
         "require-dev": {
-            "phpspec/phpspec": "~2.0"
+            "phpunit/phpunit": "~4.0"
         },
-        "time": "2015-08-13 10:07:40",
+        "time": "2015-10-15 22:28:00",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.4.x-dev"
+                "dev-master": "1.0-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Prophecy\\": "src/"
-            }
+            "psr-4": {
+                "GuzzleHttp\\Promise\\": "src/"
+            },
+            "files": [
+                "src/functions_include.php"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -2582,136 +2838,109 @@
         ],
         "authors": [
             {
-                "name": "Konstantin Kudryashov",
-                "email": "ever.zet@gmail.com",
-                "homepage": "http://everzet.com"
-            },
-            {
-                "name": "Marcello Duarte",
-                "email": "marcello.duarte@gmail.com"
+                "name": "Michael Dowling",
+                "email": "mtdowling@gmail.com",
+                "homepage": "https://github.com/mtdowling"
             }
         ],
-        "description": "Highly opinionated mocking framework for PHP 5.3+",
-        "homepage": "https://github.com/phpspec/prophecy",
+        "description": "Guzzle promises library",
         "keywords": [
-            "Double",
-            "Dummy",
-            "fake",
-            "mock",
-            "spy",
-            "stub"
+            "promise"
         ]
     },
     {
-        "name": "phpunit/phpunit",
-        "version": "4.8.11",
-        "version_normalized": "4.8.11.0",
+        "name": "guzzlehttp/psr7",
+        "version": "1.2.1",
+        "version_normalized": "1.2.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/phpunit.git",
-            "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5"
+            "url": "https://github.com/guzzle/psr7.git",
+            "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bdd199472410fd7e32751f9c814c7e06f2c21bd5",
-            "reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5",
+            "url": "https://api.github.com/repos/guzzle/psr7/zipball/4d0bdbe1206df7440219ce14c972aa57cc5e4982",
+            "reference": "4d0bdbe1206df7440219ce14c972aa57cc5e4982",
             "shasum": ""
         },
         "require": {
-            "ext-dom": "*",
-            "ext-json": "*",
-            "ext-pcre": "*",
-            "ext-reflection": "*",
-            "ext-spl": "*",
-            "php": ">=5.3.3",
-            "phpspec/prophecy": "^1.3.1",
-            "phpunit/php-code-coverage": "~2.1",
-            "phpunit/php-file-iterator": "~1.4",
-            "phpunit/php-text-template": "~1.2",
-            "phpunit/php-timer": ">=1.0.6",
-            "phpunit/phpunit-mock-objects": "~2.3",
-            "sebastian/comparator": "~1.1",
-            "sebastian/diff": "~1.2",
-            "sebastian/environment": "~1.3",
-            "sebastian/exporter": "~1.2",
-            "sebastian/global-state": "~1.0",
-            "sebastian/version": "~1.0",
-            "symfony/yaml": "~2.1|~3.0"
+            "php": ">=5.4.0",
+            "psr/http-message": "~1.0"
         },
-        "suggest": {
-            "phpunit/php-invoker": "~1.1"
+        "provide": {
+            "psr/http-message-implementation": "1.0"
         },
-        "time": "2015-10-07 10:39:46",
-        "bin": [
-            "phpunit"
-        ],
+        "require-dev": {
+            "phpunit/phpunit": "~4.0"
+        },
+        "time": "2015-11-03 01:34:55",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "4.8.x-dev"
+                "dev-master": "1.0-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "psr-4": {
+                "GuzzleHttp\\Psr7\\": "src/"
+            },
+            "files": [
+                "src/functions_include.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
+                "name": "Michael Dowling",
+                "email": "mtdowling@gmail.com",
+                "homepage": "https://github.com/mtdowling"
             }
         ],
-        "description": "The PHP Unit Testing framework.",
-        "homepage": "https://phpunit.de/",
+        "description": "PSR-7 message implementation",
         "keywords": [
-            "phpunit",
-            "testing",
-            "xunit"
+            "http",
+            "message",
+            "stream",
+            "uri"
         ]
     },
     {
-        "name": "jcalderonzumba/gastonjs",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
+        "name": "fabpot/goutte",
+        "version": "v3.1.2",
+        "version_normalized": "3.1.2.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/jcalderonzumba/gastonjs.git",
-            "reference": "5e231b4df98275c404e1371fc5fadd34f6a121ad"
+            "url": "https://github.com/FriendsOfPHP/Goutte.git",
+            "reference": "3cbc6ed222422a28400e470050f14928a153207e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/jcalderonzumba/gastonjs/zipball/5e231b4df98275c404e1371fc5fadd34f6a121ad",
-            "reference": "5e231b4df98275c404e1371fc5fadd34f6a121ad",
+            "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3cbc6ed222422a28400e470050f14928a153207e",
+            "reference": "3cbc6ed222422a28400e470050f14928a153207e",
             "shasum": ""
         },
         "require": {
-            "guzzlehttp/guzzle": "~5.0|~6.0",
-            "php": ">=5.4"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~4.6",
-            "silex/silex": "~1.2",
-            "symfony/phpunit-bridge": "~2.7",
-            "symfony/process": "~2.1"
+            "guzzlehttp/guzzle": "^6.0",
+            "php": ">=5.5.0",
+            "symfony/browser-kit": "~2.1|~3.0",
+            "symfony/css-selector": "~2.1|~3.0",
+            "symfony/dom-crawler": "~2.1|~3.0"
         },
-        "time": "2015-10-07 11:40:41",
-        "type": "phantomjs-api",
+        "time": "2015-11-05 12:58:44",
+        "type": "application",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.1.x-dev"
+                "dev-master": "3.1-dev"
             }
         },
-        "installation-source": "source",
+        "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Zumba\\GastonJS\\": "src"
+                "Goutte\\": "Goutte"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -2720,60 +2949,55 @@
         ],
         "authors": [
             {
-                "name": "Juan Francisco Calderón Zumba",
-                "email": "juanfcz@gmail.com",
-                "homepage": "http://github.com/jcalderonzumba"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com"
             }
         ],
-        "description": "PhantomJS API based server for webpage automation",
-        "homepage": "https://github.com/jcalderonzumba/gastonjs",
+        "description": "A simple PHP Web Scraper",
+        "homepage": "https://github.com/FriendsOfPHP/Goutte",
         "keywords": [
-            "api",
-            "automation",
-            "browser",
-            "headless",
-            "phantomjs"
+            "scraper"
         ]
     },
     {
-        "name": "jcalderonzumba/mink-phantomjs-driver",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
+        "name": "guzzlehttp/guzzle",
+        "version": "6.1.1",
+        "version_normalized": "6.1.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/jcalderonzumba/MinkPhantomJSDriver.git",
-            "reference": "10d7c48c9a4129463052321b52450d98983c4332"
+            "url": "https://github.com/guzzle/guzzle.git",
+            "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/jcalderonzumba/MinkPhantomJSDriver/zipball/10d7c48c9a4129463052321b52450d98983c4332",
-            "reference": "10d7c48c9a4129463052321b52450d98983c4332",
+            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/c6851d6e48f63b69357cbfa55bca116448140e0c",
+            "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c",
             "shasum": ""
         },
         "require": {
-            "behat/mink": "~1.6",
-            "jcalderonzumba/gastonjs": "~1.0",
-            "php": ">=5.4",
-            "twig/twig": "~1.8"
+            "guzzlehttp/promises": "~1.0",
+            "guzzlehttp/psr7": "~1.1",
+            "php": ">=5.5.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.6",
-            "silex/silex": "~1.2",
-            "symfony/css-selector": "~2.1",
-            "symfony/phpunit-bridge": "~2.7",
-            "symfony/process": "~2.3"
+            "ext-curl": "*",
+            "phpunit/phpunit": "~4.0",
+            "psr/log": "~1.0"
         },
-        "time": "2015-10-05 18:24:44",
-        "type": "mink-driver",
+        "time": "2015-11-23 00:47:50",
+        "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "0.4.x-dev"
+                "dev-master": "6.1-dev"
             }
         },
-        "installation-source": "source",
+        "installation-source": "dist",
         "autoload": {
+            "files": [
+                "src/functions_include.php"
+            ],
             "psr-4": {
-                "Zumba\\Mink\\Driver\\": "src"
+                "GuzzleHttp\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -2782,163 +3006,156 @@
         ],
         "authors": [
             {
-                "name": "Juan Francisco Calderón Zumba",
-                "email": "juanfcz@gmail.com",
-                "homepage": "http://github.com/jcalderonzumba"
+                "name": "Michael Dowling",
+                "email": "mtdowling@gmail.com",
+                "homepage": "https://github.com/mtdowling"
             }
         ],
-        "description": "PhantomJS driver for Mink framework",
-        "homepage": "http://mink.behat.org/",
+        "description": "Guzzle is a PHP HTTP client library",
+        "homepage": "http://guzzlephp.org/",
         "keywords": [
-            "ajax",
-            "browser",
-            "headless",
-            "javascript",
-            "phantomjs",
-            "testing"
+            "client",
+            "curl",
+            "framework",
+            "http",
+            "http client",
+            "rest",
+            "web service"
         ]
     },
     {
-        "name": "symfony/class-loader",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "zendframework/zend-feed",
+        "version": "2.6.0",
+        "version_normalized": "2.6.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/class-loader.git",
-            "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4"
+            "url": "https://github.com/zendframework/zend-feed.git",
+            "reference": "f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/class-loader/zipball/320f8d2a9cdbcbeb24be602c124aae9d998474a4",
-            "reference": "320f8d2a9cdbcbeb24be602c124aae9d998474a4",
+            "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f",
+            "reference": "f76da2bbba414ebf3bb00c81e9fdd65b04c66a7f",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.5",
+            "zendframework/zend-escaper": "~2.5",
+            "zendframework/zend-stdlib": "~2.5"
         },
         "require-dev": {
-            "symfony/finder": "~2.0,>=2.0.5"
+            "fabpot/php-cs-fixer": "1.7.*",
+            "phpunit/phpunit": "~4.0",
+            "psr/http-message": "^1.0",
+            "zendframework/zend-cache": "~2.5",
+            "zendframework/zend-db": "~2.5",
+            "zendframework/zend-http": "~2.5",
+            "zendframework/zend-validator": "~2.5"
         },
-        "time": "2015-10-23 14:47:27",
+        "suggest": {
+            "psr/http-message": "PSR-7 ^1.0, if you wish to use Zend\\Feed\\Reader\\Http\\Psr7ResponseDecorator",
+            "zendframework/zend-cache": "Zend\\Cache component, for optionally caching feeds between requests",
+            "zendframework/zend-db": "Zend\\Db component, for use with PubSubHubbub",
+            "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
+            "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for easily extending ExtensionManager implementations",
+            "zendframework/zend-validator": "Zend\\Validator component, for validating feeds and Atom entries in the Writer subcomponent"
+        },
+        "time": "2015-11-24 15:38:00",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.6-dev",
+                "dev-develop": "2.7-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\ClassLoader\\": ""
+                "Zend\\Feed\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
+            "BSD-3-Clause"
         ],
-        "description": "Symfony ClassLoader Component",
-        "homepage": "https://symfony.com"
+        "description": "provides functionality for consuming RSS and Atom feeds",
+        "homepage": "https://github.com/zendframework/zend-feed",
+        "keywords": [
+            "feed",
+            "zf2"
+        ]
     },
     {
-        "name": "symfony/console",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "zendframework/zend-diactoros",
+        "version": "1.2.0",
+        "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/console.git",
-            "reference": "5efd632294c8320ea52492db22292ff853a43766"
+            "url": "https://github.com/zendframework/zend-diactoros.git",
+            "reference": "edfda00b9831630c19c411f85f50a47bb66af457"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/console/zipball/5efd632294c8320ea52492db22292ff853a43766",
-            "reference": "5efd632294c8320ea52492db22292ff853a43766",
+            "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/edfda00b9831630c19c411f85f50a47bb66af457",
+            "reference": "edfda00b9831630c19c411f85f50a47bb66af457",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.4",
+            "psr/http-message": "~1.0"
         },
-        "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/event-dispatcher": "~2.1",
-            "symfony/process": "~2.1"
+        "provide": {
+            "psr/http-message-implementation": "~1.0.0"
         },
-        "suggest": {
-            "psr/log": "For using the console logger",
-            "symfony/event-dispatcher": "",
-            "symfony/process": ""
+        "require-dev": {
+            "phpunit/phpunit": "~4.6",
+            "squizlabs/php_codesniffer": "^2.3.1"
         },
-        "time": "2015-10-20 14:38:46",
+        "time": "2015-11-24 19:16:22",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "1.2-dev",
+                "dev-develop": "1.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Console\\": ""
+                "Zend\\Diactoros\\": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "https://symfony.com/contributors"
-            }
+            "BSD-2-Clause"
         ],
-        "description": "Symfony Console Component",
-        "homepage": "https://symfony.com"
+        "description": "PSR HTTP Message implementations",
+        "homepage": "https://github.com/zendframework/zend-diactoros",
+        "keywords": [
+            "http",
+            "psr",
+            "psr-7"
+        ]
     },
     {
-        "name": "symfony/dependency-injection",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/css-selector",
+        "version": "v2.7.7",
+        "version_normalized": "2.7.7.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/dependency-injection.git",
-            "reference": "af284e795ec8a08c80d1fc47518fd23004b89847"
+            "url": "https://github.com/symfony/css-selector.git",
+            "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/af284e795ec8a08c80d1fc47518fd23004b89847",
-            "reference": "af284e795ec8a08c80d1fc47518fd23004b89847",
+            "url": "https://api.github.com/repos/symfony/css-selector/zipball/abb47717fb88aebd9437da2fc8bb01a50a36679f",
+            "reference": "abb47717fb88aebd9437da2fc8bb01a50a36679f",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
-        "conflict": {
-            "symfony/expression-language": "<2.6"
-        },
-        "require-dev": {
-            "symfony/config": "~2.2",
-            "symfony/expression-language": "~2.6",
-            "symfony/yaml": "~2.1"
-        },
-        "suggest": {
-            "symfony/config": "",
-            "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
-            "symfony/yaml": ""
-        },
-        "time": "2015-10-27 15:38:06",
+        "time": "2015-10-30 20:10:21",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -2948,8 +3165,11 @@
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\DependencyInjection\\": ""
-            }
+                "Symfony\\Component\\CssSelector\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -2957,6 +3177,10 @@
         ],
         "authors": [
             {
+                "name": "Jean-François Simon",
+                "email": "jeanfrancois.simon@sensiolabs.com"
+            },
+            {
                 "name": "Fabien Potencier",
                 "email": "fabien@symfony.com"
             },
@@ -2965,22 +3189,22 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony DependencyInjection Component",
+        "description": "Symfony CssSelector Component",
         "homepage": "https://symfony.com"
     },
     {
         "name": "symfony/debug",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "version": "v2.7.7",
+        "version_normalized": "2.7.7.0",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/debug.git",
-            "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b"
+            "reference": "0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/debug/zipball/fb9e6887db716939f41af0ba8ef38a1582eb501b",
-            "reference": "fb9e6887db716939f41af0ba8ef38a1582eb501b",
+            "url": "https://api.github.com/repos/symfony/debug/zipball/0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa",
+            "reference": "0dbc119596f4afc82d9b2eb2a7e6a4af1ee763fa",
             "shasum": ""
         },
         "require": {
@@ -2994,7 +3218,7 @@
             "symfony/class-loader": "~2.2",
             "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2"
         },
-        "time": "2015-10-11 09:39:48",
+        "time": "2015-10-30 20:10:21",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -3005,7 +3229,10 @@
         "autoload": {
             "psr-4": {
                 "Symfony\\Component\\Debug\\": ""
-            }
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3025,27 +3252,30 @@
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/http-foundation",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/dom-crawler",
+        "version": "v2.7.7",
+        "version_normalized": "2.7.7.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/http-foundation.git",
-            "reference": "7598eea151ae3d4134df1f9957364b17809eea75"
+            "url": "https://github.com/symfony/dom-crawler.git",
+            "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7598eea151ae3d4134df1f9957364b17809eea75",
-            "reference": "7598eea151ae3d4134df1f9957364b17809eea75",
+            "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b33593cbfe1d81b50d48353f338aca76a08658d8",
+            "reference": "b33593cbfe1d81b50d48353f338aca76a08658d8",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
         "require-dev": {
-            "symfony/expression-language": "~2.4"
+            "symfony/css-selector": "~2.3"
+        },
+        "suggest": {
+            "symfony/css-selector": ""
         },
-        "time": "2015-10-23 14:47:27",
+        "time": "2015-11-02 20:20:53",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -3055,10 +3285,10 @@
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\HttpFoundation\\": ""
+                "Symfony\\Component\\DomCrawler\\": ""
             },
-            "classmap": [
-                "Resources/stubs"
+            "exclude-from-classmap": [
+                "/Tests/"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -3075,39 +3305,36 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony HttpFoundation Component",
+        "description": "Symfony DomCrawler Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/event-dispatcher",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/browser-kit",
+        "version": "v2.7.7",
+        "version_normalized": "2.7.7.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/event-dispatcher.git",
-            "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8"
+            "url": "https://github.com/symfony/browser-kit.git",
+            "reference": "bd28847ea2193916074c7b11d4fdd78570049694"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87a5db5ea887763fa3a31a5471b512ff1596d9b8",
-            "reference": "87a5db5ea887763fa3a31a5471b512ff1596d9b8",
+            "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bd28847ea2193916074c7b11d4fdd78570049694",
+            "reference": "bd28847ea2193916074c7b11d4fdd78570049694",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.3.9",
+            "symfony/dom-crawler": "~2.0,>=2.0.5"
         },
         "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/config": "~2.0,>=2.0.5",
-            "symfony/dependency-injection": "~2.6",
-            "symfony/expression-language": "~2.6",
-            "symfony/stopwatch": "~2.3"
+            "symfony/css-selector": "~2.0,>=2.0.5",
+            "symfony/process": "~2.3.34|~2.7,>=2.7.6"
         },
         "suggest": {
-            "symfony/dependency-injection": "",
-            "symfony/http-kernel": ""
+            "symfony/process": ""
         },
-        "time": "2015-10-11 09:39:48",
+        "time": "2015-11-02 20:20:53",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -3117,8 +3344,11 @@
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\EventDispatcher\\": ""
-            }
+                "Symfony\\Component\\BrowserKit\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3134,72 +3364,57 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony EventDispatcher Component",
+        "description": "Symfony BrowserKit Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/http-kernel",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/serializer",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/http-kernel.git",
-            "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77"
+            "url": "https://github.com/symfony/serializer.git",
+            "reference": "aab4ce70b7d1ae7290388172141e776de18d4a1f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4260f2273a446a6715063dc9ca89fd0c475c2f77",
-            "reference": "4260f2273a446a6715063dc9ca89fd0c475c2f77",
+            "url": "https://api.github.com/repos/symfony/serializer/zipball/aab4ce70b7d1ae7290388172141e776de18d4a1f",
+            "reference": "aab4ce70b7d1ae7290388172141e776de18d4a1f",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9",
-            "psr/log": "~1.0",
-            "symfony/debug": "~2.6,>=2.6.2",
-            "symfony/event-dispatcher": "~2.6,>=2.6.7",
-            "symfony/http-foundation": "~2.5,>=2.5.4"
-        },
-        "conflict": {
-            "symfony/config": "<2.7"
+            "symfony/polyfill-php55": "~1.0"
         },
         "require-dev": {
-            "symfony/browser-kit": "~2.3",
-            "symfony/class-loader": "~2.1",
-            "symfony/config": "~2.7",
-            "symfony/console": "~2.3",
-            "symfony/css-selector": "~2.0,>=2.0.5",
-            "symfony/dependency-injection": "~2.2",
-            "symfony/dom-crawler": "~2.0,>=2.0.5",
-            "symfony/expression-language": "~2.4",
-            "symfony/finder": "~2.0,>=2.0.5",
-            "symfony/process": "~2.0,>=2.0.5",
-            "symfony/routing": "~2.2",
-            "symfony/stopwatch": "~2.3",
-            "symfony/templating": "~2.2",
-            "symfony/translation": "~2.0,>=2.0.5",
-            "symfony/var-dumper": "~2.6"
+            "doctrine/annotations": "~1.0",
+            "doctrine/cache": "~1.0",
+            "symfony/config": "~2.2|~3.0.0",
+            "symfony/property-access": "~2.3|~3.0.0",
+            "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
         },
         "suggest": {
-            "symfony/browser-kit": "",
-            "symfony/class-loader": "",
-            "symfony/config": "",
-            "symfony/console": "",
-            "symfony/dependency-injection": "",
-            "symfony/finder": "",
-            "symfony/var-dumper": ""
+            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+            "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
+            "symfony/config": "For using the XML mapping loader.",
+            "symfony/property-access": "For using the ObjectNormalizer.",
+            "symfony/yaml": "For using the default YAML mapping loader."
         },
-        "time": "2015-10-27 19:07:21",
+        "time": "2015-11-28 10:40:16",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\HttpKernel\\": ""
-            }
+                "Symfony\\Component\\Serializer\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3215,57 +3430,45 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony HttpKernel Component",
+        "description": "Symfony Serializer Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/routing",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/class-loader",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/routing.git",
-            "reference": "f353e1f588679c3ec987624e6c617646bd01ba38"
+            "url": "https://github.com/symfony/class-loader.git",
+            "reference": "51f83451bf0ddfc696e47e4642d6cd10fcfce160"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/routing/zipball/f353e1f588679c3ec987624e6c617646bd01ba38",
-            "reference": "f353e1f588679c3ec987624e6c617646bd01ba38",
+            "url": "https://api.github.com/repos/symfony/class-loader/zipball/51f83451bf0ddfc696e47e4642d6cd10fcfce160",
+            "reference": "51f83451bf0ddfc696e47e4642d6cd10fcfce160",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
-        "conflict": {
-            "symfony/config": "<2.7"
-        },
         "require-dev": {
-            "doctrine/annotations": "~1.0",
-            "doctrine/common": "~2.2",
-            "psr/log": "~1.0",
-            "symfony/config": "~2.7",
-            "symfony/expression-language": "~2.4",
-            "symfony/http-foundation": "~2.3",
-            "symfony/yaml": "~2.0,>=2.0.5"
-        },
-        "suggest": {
-            "doctrine/annotations": "For using the annotation loader",
-            "symfony/config": "For using the all-in-one router or any loader",
-            "symfony/expression-language": "For using expression matching",
-            "symfony/yaml": "For using the YAML loader"
+            "symfony/finder": "~2.0,>=2.0.5|~3.0.0"
         },
-        "time": "2015-10-27 15:38:06",
+        "time": "2015-11-26 07:00:59",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Routing\\": ""
-            }
+                "Symfony\\Component\\ClassLoader\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3281,59 +3484,53 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Routing Component",
-        "homepage": "https://symfony.com",
-        "keywords": [
-            "router",
-            "routing",
-            "uri",
-            "url"
-        ]
+        "description": "Symfony ClassLoader Component",
+        "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/serializer",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/console",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/serializer.git",
-            "reference": "14056684acad23b8815eb336bccc0b4ac76bd823"
+            "url": "https://github.com/symfony/console.git",
+            "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/serializer/zipball/14056684acad23b8815eb336bccc0b4ac76bd823",
-            "reference": "14056684acad23b8815eb336bccc0b4ac76bd823",
+            "url": "https://api.github.com/repos/symfony/console/zipball/d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
+            "reference": "d232bfc100dfd32b18ccbcab4bcc8f28697b7e41",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.3.9",
+            "symfony/polyfill-mbstring": "~1.0"
         },
         "require-dev": {
-            "doctrine/annotations": "~1.0",
-            "doctrine/cache": "~1.0",
-            "symfony/config": "~2.2",
-            "symfony/property-access": "~2.3",
-            "symfony/yaml": "~2.0,>=2.0.5"
+            "psr/log": "~1.0",
+            "symfony/event-dispatcher": "~2.1|~3.0.0",
+            "symfony/process": "~2.1|~3.0.0"
         },
         "suggest": {
-            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
-            "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
-            "symfony/config": "For using the XML mapping loader.",
-            "symfony/property-access": "For using the ObjectNormalizer.",
-            "symfony/yaml": "For using the default YAML mapping loader."
+            "psr/log": "For using the console logger",
+            "symfony/event-dispatcher": "",
+            "symfony/process": ""
         },
-        "time": "2015-10-11 09:39:48",
+        "time": "2015-11-30 12:35:10",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Serializer\\": ""
-            }
+                "Symfony\\Component\\Console\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3349,53 +3546,55 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Serializer Component",
+        "description": "Symfony Console Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/translation",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/dependency-injection",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/translation.git",
-            "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8"
+            "url": "https://github.com/symfony/dependency-injection.git",
+            "reference": "1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/translation/zipball/6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
-            "reference": "6ccd9289ec1c71d01a49d83480de3b5293ce30c8",
+            "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4",
+            "reference": "1ac8ce1a1cff7ff9467d44bc71b0f71dfa751ba4",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
         "conflict": {
-            "symfony/config": "<2.7"
+            "symfony/expression-language": "<2.6"
         },
         "require-dev": {
-            "psr/log": "~1.0",
-            "symfony/config": "~2.7",
-            "symfony/intl": "~2.4",
-            "symfony/yaml": "~2.2"
+            "symfony/config": "~2.2|~3.0.0",
+            "symfony/expression-language": "~2.6|~3.0.0",
+            "symfony/yaml": "~2.1|~3.0.0"
         },
         "suggest": {
-            "psr/log": "To use logging capability in translator",
             "symfony/config": "",
+            "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
             "symfony/yaml": ""
         },
-        "time": "2015-10-27 15:38:06",
+        "time": "2015-11-30 06:56:28",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Translation\\": ""
-            }
+                "Symfony\\Component\\DependencyInjection\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3411,63 +3610,46 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Translation Component",
+        "description": "Symfony DependencyInjection Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/validator",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/http-foundation",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/validator.git",
-            "reference": "df9021e689aa3d08367881e7f8917219fabe5e64"
+            "url": "https://github.com/symfony/http-foundation.git",
+            "reference": "5ed0ec39ef684bec84d1fd9f2a55104e403b7e49"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/validator/zipball/df9021e689aa3d08367881e7f8917219fabe5e64",
-            "reference": "df9021e689aa3d08367881e7f8917219fabe5e64",
+            "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5ed0ec39ef684bec84d1fd9f2a55104e403b7e49",
+            "reference": "5ed0ec39ef684bec84d1fd9f2a55104e403b7e49",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9",
-            "symfony/translation": "~2.4"
+            "symfony/polyfill-php54": "~1.0"
         },
         "require-dev": {
-            "doctrine/annotations": "~1.0",
-            "doctrine/cache": "~1.0",
-            "doctrine/common": "~2.3",
-            "egulias/email-validator": "~1.2,>=1.2.1",
-            "symfony/config": "~2.2",
-            "symfony/expression-language": "~2.4",
-            "symfony/http-foundation": "~2.1",
-            "symfony/intl": "~2.4",
-            "symfony/property-access": "~2.3",
-            "symfony/yaml": "~2.0,>=2.0.5"
-        },
-        "suggest": {
-            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
-            "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
-            "egulias/email-validator": "Strict (RFC compliant) email validation",
-            "symfony/config": "",
-            "symfony/expression-language": "For using the 2.4 Expression validator",
-            "symfony/http-foundation": "",
-            "symfony/intl": "",
-            "symfony/property-access": "For using the 2.4 Validator API",
-            "symfony/yaml": ""
+            "symfony/expression-language": "~2.4|~3.0.0"
         },
-        "time": "2015-10-18 20:23:18",
+        "time": "2015-11-27 11:03:19",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Validator\\": ""
-            }
+                "Symfony\\Component\\HttpFoundation\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3483,39 +3665,53 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Validator Component",
+        "description": "Symfony HttpFoundation Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/process",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/event-dispatcher",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/process.git",
-            "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7"
+            "url": "https://github.com/symfony/event-dispatcher.git",
+            "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/process/zipball/4a959dd4e19c2c5d7512689413921e0a74386ec7",
-            "reference": "4a959dd4e19c2c5d7512689413921e0a74386ec7",
+            "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a5eb815363c0388e83247e7e9853e5dbc14999cc",
+            "reference": "a5eb815363c0388e83247e7e9853e5dbc14999cc",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
-        "time": "2015-10-23 14:47:27",
+        "require-dev": {
+            "psr/log": "~1.0",
+            "symfony/config": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/dependency-injection": "~2.6|~3.0.0",
+            "symfony/expression-language": "~2.6|~3.0.0",
+            "symfony/stopwatch": "~2.3|~3.0.0"
+        },
+        "suggest": {
+            "symfony/dependency-injection": "",
+            "symfony/http-kernel": ""
+        },
+        "time": "2015-10-30 20:15:42",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Process\\": ""
-            }
+                "Symfony\\Component\\EventDispatcher\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3531,39 +3727,75 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Process Component",
+        "description": "Symfony EventDispatcher Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/yaml",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/http-kernel",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/yaml.git",
-            "reference": "eca9019c88fbe250164affd107bc8057771f3f4d"
+            "url": "https://github.com/symfony/http-kernel.git",
+            "reference": "a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/yaml/zipball/eca9019c88fbe250164affd107bc8057771f3f4d",
-            "reference": "eca9019c88fbe250164affd107bc8057771f3f4d",
+            "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905",
+            "reference": "a77cf7e6fe1f3ac158b2eb17f89e8efdf7820905",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.3.9",
+            "psr/log": "~1.0",
+            "symfony/debug": "~2.6,>=2.6.2",
+            "symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0",
+            "symfony/http-foundation": "~2.5,>=2.5.4|~3.0.0"
+        },
+        "conflict": {
+            "symfony/config": "<2.7"
+        },
+        "require-dev": {
+            "symfony/browser-kit": "~2.3|~3.0.0",
+            "symfony/class-loader": "~2.1|~3.0.0",
+            "symfony/config": "~2.8",
+            "symfony/console": "~2.3|~3.0.0",
+            "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/dependency-injection": "~2.8|~3.0.0",
+            "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/expression-language": "~2.4|~3.0.0",
+            "symfony/finder": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/process": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/routing": "~2.8|~3.0.0",
+            "symfony/stopwatch": "~2.3|~3.0.0",
+            "symfony/templating": "~2.2|~3.0.0",
+            "symfony/translation": "~2.0,>=2.0.5|~3.0.0",
+            "symfony/var-dumper": "~2.6|~3.0.0"
+        },
+        "suggest": {
+            "symfony/browser-kit": "",
+            "symfony/class-loader": "",
+            "symfony/config": "",
+            "symfony/console": "",
+            "symfony/dependency-injection": "",
+            "symfony/finder": "",
+            "symfony/var-dumper": ""
         },
-        "time": "2015-10-11 09:39:48",
+        "time": "2015-11-30 17:25:56",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\Yaml\\": ""
-            }
+                "Symfony\\Component\\HttpKernel\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3579,39 +3811,61 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Yaml Component",
+        "description": "Symfony HttpKernel Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/css-selector",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/routing",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/css-selector.git",
-            "reference": "e1b865b26be4a56d22a8dee398375044a80c865b"
+            "url": "https://github.com/symfony/routing.git",
+            "reference": "f76830dc0f8068df36226dc822e7fc1f5f73be46"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1b865b26be4a56d22a8dee398375044a80c865b",
-            "reference": "e1b865b26be4a56d22a8dee398375044a80c865b",
+            "url": "https://api.github.com/repos/symfony/routing/zipball/f76830dc0f8068df36226dc822e7fc1f5f73be46",
+            "reference": "f76830dc0f8068df36226dc822e7fc1f5f73be46",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9"
         },
-        "time": "2015-10-11 09:39:48",
+        "conflict": {
+            "symfony/config": "<2.7"
+        },
+        "require-dev": {
+            "doctrine/annotations": "~1.0",
+            "doctrine/common": "~2.2",
+            "psr/log": "~1.0",
+            "symfony/config": "~2.7|~3.0.0",
+            "symfony/expression-language": "~2.4|~3.0.0",
+            "symfony/http-foundation": "~2.3|~3.0.0",
+            "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
+        },
+        "suggest": {
+            "doctrine/annotations": "For using the annotation loader",
+            "symfony/config": "For using the all-in-one router or any loader",
+            "symfony/dependency-injection": "For loading routes from a service",
+            "symfony/expression-language": "For using expression matching",
+            "symfony/yaml": "For using the YAML loader"
+        },
+        "time": "2015-11-26 07:00:59",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\CssSelector\\": ""
-            }
+                "Symfony\\Component\\Routing\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3619,10 +3873,6 @@
         ],
         "authors": [
             {
-                "name": "Jean-François Simon",
-                "email": "jeanfrancois.simon@sensiolabs.com"
-            },
-            {
                 "name": "Fabien Potencier",
                 "email": "fabien@symfony.com"
             },
@@ -3631,45 +3881,63 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony CssSelector Component",
-        "homepage": "https://symfony.com"
+        "description": "Symfony Routing Component",
+        "homepage": "https://symfony.com",
+        "keywords": [
+            "router",
+            "routing",
+            "uri",
+            "url"
+        ]
     },
     {
-        "name": "symfony/dom-crawler",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/translation",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/dom-crawler.git",
-            "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612"
+            "url": "https://github.com/symfony/translation.git",
+            "reference": "6772657767649fc3b31df12705194fb4af11ef98"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/5fef7d8b80d8f9992df99d8ee283f420484c9612",
-            "reference": "5fef7d8b80d8f9992df99d8ee283f420484c9612",
+            "url": "https://api.github.com/repos/symfony/translation/zipball/6772657767649fc3b31df12705194fb4af11ef98",
+            "reference": "6772657767649fc3b31df12705194fb4af11ef98",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.9"
+            "php": ">=5.3.9",
+            "symfony/polyfill-mbstring": "~1.0"
+        },
+        "conflict": {
+            "symfony/config": "<2.7"
         },
         "require-dev": {
-            "symfony/css-selector": "~2.3"
+            "psr/log": "~1.0",
+            "symfony/config": "~2.8",
+            "symfony/intl": "~2.4|~3.0.0",
+            "symfony/yaml": "~2.2|~3.0.0"
         },
         "suggest": {
-            "symfony/css-selector": ""
+            "psr/log": "To use logging capability in translator",
+            "symfony/config": "",
+            "symfony/yaml": ""
         },
-        "time": "2015-10-11 09:39:48",
+        "time": "2015-11-18 13:45:00",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\DomCrawler\\": ""
-            }
+                "Symfony\\Component\\Translation\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3685,47 +3953,65 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony DomCrawler Component",
+        "description": "Symfony Translation Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "symfony/browser-kit",
-        "version": "v2.7.6",
-        "version_normalized": "2.7.6.0",
+        "name": "symfony/validator",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/browser-kit.git",
-            "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367"
+            "url": "https://github.com/symfony/validator.git",
+            "reference": "8c42b96f5b23f0642c1a518addafcef8077154a2"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/browser-kit/zipball/07d664a052572ccc28eb2ab7dbbe82155b1ad367",
-            "reference": "07d664a052572ccc28eb2ab7dbbe82155b1ad367",
+            "url": "https://api.github.com/repos/symfony/validator/zipball/8c42b96f5b23f0642c1a518addafcef8077154a2",
+            "reference": "8c42b96f5b23f0642c1a518addafcef8077154a2",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.9",
-            "symfony/dom-crawler": "~2.0,>=2.0.5"
+            "symfony/translation": "~2.4|~3.0.0"
         },
         "require-dev": {
-            "symfony/css-selector": "~2.0,>=2.0.5",
-            "symfony/process": "~2.3.34|~2.7,>=2.7.6"
+            "doctrine/annotations": "~1.0",
+            "doctrine/cache": "~1.0",
+            "egulias/email-validator": "~1.2,>=1.2.1",
+            "symfony/config": "~2.2|~3.0.0",
+            "symfony/expression-language": "~2.4|~3.0.0",
+            "symfony/http-foundation": "~2.1|~3.0.0",
+            "symfony/intl": "~2.4|~3.0.0",
+            "symfony/property-access": "~2.3|~3.0.0",
+            "symfony/yaml": "~2.0,>=2.0.5|~3.0.0"
         },
         "suggest": {
-            "symfony/process": ""
+            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+            "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
+            "egulias/email-validator": "Strict (RFC compliant) email validation",
+            "symfony/config": "",
+            "symfony/expression-language": "For using the 2.4 Expression validator",
+            "symfony/http-foundation": "",
+            "symfony/intl": "",
+            "symfony/property-access": "For using the 2.4 Validator API",
+            "symfony/yaml": ""
         },
-        "time": "2015-10-23 14:47:27",
+        "time": "2015-11-20 14:39:26",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.7-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Symfony\\Component\\BrowserKit\\": ""
-            }
+                "Symfony\\Component\\Validator\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3741,110 +4027,93 @@
                 "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Symfony BrowserKit Component",
+        "description": "Symfony Validator Component",
         "homepage": "https://symfony.com"
     },
     {
-        "name": "twig/twig",
-        "version": "v1.23.1",
-        "version_normalized": "1.23.1.0",
+        "name": "symfony/process",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/twigphp/Twig.git",
-            "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6"
+            "url": "https://github.com/symfony/process.git",
+            "reference": "1b988a88e3551102f3c2d9e1d47a18c3a78d6312"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
-            "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+            "url": "https://api.github.com/repos/symfony/process/zipball/1b988a88e3551102f3c2d9e1d47a18c3a78d6312",
+            "reference": "1b988a88e3551102f3c2d9e1d47a18c3a78d6312",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.2.7"
-        },
-        "require-dev": {
-            "symfony/debug": "~2.7",
-            "symfony/phpunit-bridge": "~2.7"
+            "php": ">=5.3.9"
         },
-        "time": "2015-11-05 12:49:06",
+        "time": "2015-11-30 12:35:10",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.23-dev"
+                "dev-master": "2.8-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Twig_": "lib/"
-            }
+            "psr-4": {
+                "Symfony\\Component\\Process\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Armin Ronacher",
-                "email": "armin.ronacher@active-4.com",
-                "role": "Project Founder"
+                "email": "fabien@symfony.com"
             },
             {
-                "name": "Twig Team",
-                "homepage": "http://twig.sensiolabs.org/contributors",
-                "role": "Contributors"
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Twig, the flexible, fast, and secure template language for PHP",
-        "homepage": "http://twig.sensiolabs.org",
-        "keywords": [
-            "templating"
-        ]
+        "description": "Symfony Process Component",
+        "homepage": "https://symfony.com"
     },
     {
-        "name": "wikimedia/composer-merge-plugin",
-        "version": "v1.3.0",
-        "version_normalized": "1.3.0.0",
+        "name": "symfony/yaml",
+        "version": "v2.8.0",
+        "version_normalized": "2.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/wikimedia/composer-merge-plugin.git",
-            "reference": "bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9"
+            "url": "https://github.com/symfony/yaml.git",
+            "reference": "f79824187de95064a2f5038904c4d7f0227fedb5"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/wikimedia/composer-merge-plugin/zipball/bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9",
-            "reference": "bfed1f8d4eb97e9ba80eee57ea46229d7e5364d9",
+            "url": "https://api.github.com/repos/symfony/yaml/zipball/f79824187de95064a2f5038904c4d7f0227fedb5",
+            "reference": "f79824187de95064a2f5038904c4d7f0227fedb5",
             "shasum": ""
         },
         "require": {
-            "composer-plugin-api": "^1.0",
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "composer/composer": "1.0.*@dev",
-            "jakub-onderka/php-parallel-lint": "~0.8",
-            "phpunit/phpunit": "~4.8|~5.0",
-            "squizlabs/php_codesniffer": "~2.1.0"
+            "php": ">=5.3.9"
         },
-        "time": "2015-11-06 20:31:16",
-        "type": "composer-plugin",
+        "time": "2015-11-30 12:35:10",
+        "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.3.x-dev"
-            },
-            "class": "Wikimedia\\Composer\\MergePlugin"
+                "dev-master": "2.8-dev"
+            }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-4": {
-                "Wikimedia\\Composer\\": "src/"
-            }
+                "Symfony\\Component\\Yaml\\": ""
+            },
+            "exclude-from-classmap": [
+                "/Tests/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -3852,10 +4121,15 @@
         ],
         "authors": [
             {
-                "name": "Bryan Davis",
-                "email": "bd808@wikimedia.org"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
         ],
-        "description": "Composer plugin to merge multiple composer.json files"
+        "description": "Symfony Yaml Component",
+        "homepage": "https://symfony.com"
     }
 ]
diff --git a/vendor/composer/installers/.travis.yml b/vendor/composer/installers/.travis.yml
index 81ca8e1..dc4ecf4 100644
--- a/vendor/composer/installers/.travis.yml
+++ b/vendor/composer/installers/.travis.yml
@@ -5,10 +5,17 @@ php:
   - 5.4
   - 5.5
   - 5.6
+  - 7.0
   - hhvm
 
-before_script:
-  - curl -s http://getcomposer.org/installer | php -- --quiet
-  - php composer.phar install --dev
+matrix:
+  fast_finish: true
+  allow_failures:
+    - php: 7.0
 
-script: phpunit
+before_script:  
+  - composer self-update
+  - composer install
+
+script:
+  - phpunit
diff --git a/vendor/composer/installers/README.md b/vendor/composer/installers/README.md
index b331771..3a9664e 100644
--- a/vendor/composer/installers/README.md
+++ b/vendor/composer/installers/README.md
@@ -36,6 +36,7 @@ is not needed to install packages with these frameworks:
 | Aimeos       | `aimeos-extension`
 | Asgard       | `asgard-module`<br>`asgard-theme`
 | AGL          | `agl-module`
+| Bonefish     | `bonefish-package`
 | AnnotateCms  | `annotatecms-module`<br>`annotatecms-component`<br>`annotatecms-service`
 | Bitrix       | `bitrix-module`<br>`bitrix-component`<br>`bitrix-theme`
 | CakePHP 2+   | **`cakephp-plugin`**
@@ -55,6 +56,7 @@ is not needed to install packages with these frameworks:
 | Hurad        | `hurad-plugin`<br>`hurad-theme`
 | Joomla       | `joomla-component`<br>`joomla-module`<br>`joomla-template`<br>`joomla-plugin`<br>`joomla-library`
 | Kirby        | **`kirby-plugin`**
+| KodiCMS      | `kodicms-plugin`<br>`kodicms-media`
 | Kohana       | **`kohana-module`**
 | Laravel      | `laravel-library`
 | Lithium      | **`lithium-library`<br>`lithium-source`**
@@ -166,8 +168,8 @@ not be inflected.
 ## Contribute!
 
 * [Fork and clone](https://help.github.com/articles/fork-a-repo).
-* Run the command `php composer.phar install --dev` to install the dev
-  dependencies. See [Composer](https://github.com/composer/composer#installation--usage).
+* Run the command `php composer.phar install` to install the dependencies. 
+  This will also install the dev dependencies. See [Composer](https://getcomposer.org/doc/03-cli.md#install).
 * Use the command `phpunit` to run the tests. See [PHPUnit](http://phpunit.de).
 * Create a branch, commit, push and send us a
   [pull request](https://help.github.com/articles/using-pull-requests).
diff --git a/vendor/composer/installers/composer.json b/vendor/composer/installers/composer.json
index 6ee931e..19e5f0f 100644
--- a/vendor/composer/installers/composer.json
+++ b/vendor/composer/installers/composer.json
@@ -1,6 +1,6 @@
 {
     "name": "composer/installers",
-    "type": "composer-installer",
+    "type": "composer-plugin",
     "license": "MIT",
     "description": "A multi-framework Composer library installer",
     "keywords": [
@@ -61,7 +61,7 @@
         "psr-0": { "Composer\\Installers\\": "src/" }
     },
     "extra": {
-        "class": "Composer\\Installers\\Installer",
+        "class": "Composer\\Installers\\Plugin",
         "branch-alias": {
             "dev-master": "1.0-dev"
         }
@@ -70,6 +70,9 @@
         "shama/baton": "*",
         "roundcube/plugin-installer": "*"
     },
+    "require": {
+        "composer-plugin-api": "1.0.0"
+    },
     "require-dev": {
         "composer/composer": "1.0.*@dev",
         "phpunit/phpunit": "4.1.*"
diff --git a/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php b/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
index cc27d3e..43938ec 100644
--- a/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
+++ b/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
@@ -1,6 +1,7 @@
 <?php
 namespace Composer\Installers;
 
+use Composer\IO\IOInterface;
 use Composer\Composer;
 use Composer\Package\PackageInterface;
 
@@ -9,17 +10,20 @@
     protected $locations = array();
     protected $composer;
     protected $package;
+    protected $io;
 
     /**
      * Initializes base installer.
      *
      * @param PackageInterface $package
      * @param Composer         $composer
+     * @param IOInterface      $io
      */
-    public function __construct(PackageInterface $package = null, Composer $composer = null)
+    public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
     {
         $this->composer = $composer;
         $this->package = $package;
+        $this->io = $io;
     }
 
     /**
diff --git a/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php b/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
index 48a8367..9c79838 100644
--- a/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
+++ b/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
@@ -1,11 +1,89 @@
 <?php
 namespace Composer\Installers;
 
+use Composer\Util\Filesystem;
+
+/**
+ * Installer for Bitrix Framework
+ *
+ * @author Nik Samokhvalov <nik@samokhvalov.info>
+ * @author Denis Kulichkin <onexhovia@gmail.com>
+ */
 class BitrixInstaller extends BaseInstaller
 {
     protected $locations = array(
-        'module'    => 'local/modules/{$name}/',
-        'component' => 'local/components/{$name}/',
-        'theme'     => 'local/templates/{$name}/'
+        'module'    => 'bitrix/modules/{$name}/',
+        'component' => 'bitrix/components/{$name}/',
+        'theme'     => 'bitrix/templates/{$name}/',
     );
+
+    /**
+     * @var array Storage for informations about duplicates at all the time of installation packages
+     */
+    private static $checkedDuplicates = array();
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function templatePath($path, array $vars = array())
+    {
+        $templatePath = parent::templatePath($path, $vars);
+        $this->checkDuplicates($templatePath, $vars);
+
+        return $templatePath;
+    }
+
+    /**
+     * Duplicates search packages
+     *
+     * @param string $templatePath
+     * @param array $vars
+     */
+    protected function checkDuplicates($templatePath, array $vars = array())
+    {
+        /**
+         * Incorrect paths for backward compatibility
+         */
+        $oldLocations = array(
+            'module'    => 'local/modules/{$name}/',
+            'component' => 'local/components/{$name}/',
+            'theme'     => 'local/templates/{$name}/'
+        );
+
+        $packageType = substr($vars['type'], strlen('bitrix') + 1);
+        $oldLocation = str_replace('{$name}', $vars['name'], $oldLocations[$packageType]);
+
+        if (in_array($oldLocation, static::$checkedDuplicates)) {
+            return;
+        }
+
+        if ($oldLocation !== $templatePath && file_exists($oldLocation) && $this->io && $this->io->isInteractive()) {
+
+            $this->io->writeError('    <error>Duplication of packages:</error>');
+            $this->io->writeError('    <info>Package ' . $oldLocation . ' will be called instead package ' . $templatePath . '</info>');
+
+            while (true) {
+                switch ($this->io->ask('    <info>Delete ' . $oldLocation . ' [y,n,?]?</info> ', '?')) {
+                    case 'y':
+                        $fs = new Filesystem();
+                        $fs->removeDirectory($oldLocation);
+                        break 2;
+
+                    case 'n':
+                        break 2;
+
+                    case '?':
+                    default:
+                        $this->io->writeError(array(
+                            '    y - delete package ' . $oldLocation . ' and to continue with the installation',
+                            '    n - don\'t delete and to continue with the installation',
+                        ));
+                        $this->io->writeError('    ? - print help');
+                        break;
+                }
+            }
+        }
+
+        static::$checkedDuplicates[] = $oldLocation;
+    }
 }
diff --git a/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php b/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php
new file mode 100644
index 0000000..da3aad2
--- /dev/null
+++ b/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php
@@ -0,0 +1,9 @@
+<?php
+namespace Composer\Installers;
+
+class BonefishInstaller extends BaseInstaller
+{
+    protected $locations = array(
+        'package'    => 'Packages/{$vendor}/{$name}/'
+    );
+}
diff --git a/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php b/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
index cbeb60b..176c91a 100644
--- a/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
+++ b/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
@@ -3,8 +3,6 @@
 
 use Composer\DependencyResolver\Pool;
 use Composer\Package\PackageInterface;
-use Composer\Package\LinkConstraint\MultiConstraint;
-use Composer\Package\LinkConstraint\VersionConstraint;
 
 class CakePHPInstaller extends BaseInstaller
 {
@@ -52,21 +50,29 @@ public function getLocations()
      */
     protected function matchesCakeVersion($matcher, $version)
     {
+        if (class_exists('Composer\Semver\Constraint\MultiConstraint')) {
+            $multiClass = 'Composer\Semver\Constraint\MultiConstraint';
+            $constraintClass = 'Composer\Semver\Constraint\Constraint';
+        } else {
+            $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
+            $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
+        }
+
         $repositoryManager = $this->composer->getRepositoryManager();
         if ($repositoryManager) {
             $repos = $repositoryManager->getLocalRepository();
             if (!$repos) {
                 return false;
             }
-            $cake3 = new MultiConstraint(array(
-                new VersionConstraint($matcher, $version),
-                new VersionConstraint('!=', '9999999-dev'),
+            $cake3 = new $multiClass(array(
+                new $constraintClass($matcher, $version),
+                new $constraintClass('!=', '9999999-dev'),
             ));
             $pool = new Pool('dev');
             $pool->addRepository($repos);
             $packages = $pool->whatProvides('cakephp/cakephp');
             foreach ($packages as $package) {
-                $installed = new VersionConstraint('=', $package->getVersion());
+                $installed = new $constraintClass('=', $package->getVersion());
                 if ($cake3->matches($installed)) {
                     return true;
                     break;
diff --git a/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php b/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
index dc3be8d..d37a77a 100644
--- a/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
+++ b/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
@@ -1,9 +1,35 @@
 <?php
 namespace Composer\Installers;
 
+/**
+ * Installer for Craft Plugins
+ */
 class CraftInstaller extends BaseInstaller
 {
+    const NAME_PREFIX = 'craft';
+    const NAME_SUFFIX = 'plugin';
+
     protected $locations = array(
         'plugin' => 'craft/plugins/{$name}/',
     );
+
+    /**
+     * Strip `craft-` prefix and/or `-plugin` suffix from package names
+     *
+     * @param  array $vars
+     *
+     * @return array
+     */
+    final public function inflectPackageVars($vars)
+    {
+        return $this->inflectPluginVars($vars);
+    }
+
+    private function inflectPluginVars($vars)
+    {
+        $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
+        $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
+
+        return $vars;
+    }
 }
diff --git a/vendor/composer/installers/src/Composer/Installers/Installer.php b/vendor/composer/installers/src/Composer/Installers/Installer.php
index 63ba64c..6d04c61 100644
--- a/vendor/composer/installers/src/Composer/Installers/Installer.php
+++ b/vendor/composer/installers/src/Composer/Installers/Installer.php
@@ -1,6 +1,7 @@
 <?php
 namespace Composer\Installers;
 
+use Composer\IO\IOInterface;
 use Composer\Installer\LibraryInstaller;
 use Composer\Package\PackageInterface;
 use Composer\Repository\InstalledRepositoryInterface;
@@ -18,6 +19,7 @@ class Installer extends LibraryInstaller
         'agl'          => 'AglInstaller',
         'annotatecms'  => 'AnnotateCmsInstaller',
         'bitrix'       => 'BitrixInstaller',
+        'bonefish'     => 'BonefishInstaller',
         'cakephp'      => 'CakePHPInstaller',
         'chef'         => 'ChefInstaller',
         'ccframework'  => 'ClanCatsFrameworkInstaller',
@@ -35,6 +37,7 @@ class Installer extends LibraryInstaller
         'hurad'        => 'HuradInstaller',
         'joomla'       => 'JoomlaInstaller',
         'kirby'        => 'KirbyInstaller',
+        'kodicms'      => 'KodiCMSInstaller',
         'kohana'       => 'KohanaInstaller',
         'laravel'      => 'LaravelInstaller',
         'lithium'      => 'LithiumInstaller',
@@ -67,7 +70,7 @@ class Installer extends LibraryInstaller
         'wordpress'    => 'WordPressInstaller',
         'zend'         => 'ZendInstaller',
         'zikula'       => 'ZikulaInstaller',
-        'prestashop'   => 'PrestashopInstaller',
+        'prestashop'   => 'PrestashopInstaller'
     );
 
     /**
@@ -85,7 +88,7 @@ public function getInstallPath(PackageInterface $package)
         }
 
         $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
-        $installer = new $class($package, $this->composer);
+        $installer = new $class($package, $this->composer, $this->getIO());
 
         return $installer->getInstallPath($package, $frameworkType);
     }
@@ -153,11 +156,21 @@ protected function getLocationPattern($frameworkType)
         if (!empty($this->supportedTypes[$frameworkType])) {
             $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
             /** @var BaseInstaller $framework */
-            $framework = new $frameworkClass(null, $this->composer);
+            $framework = new $frameworkClass(null, $this->composer, $this->getIO());
             $locations = array_keys($framework->getLocations());
             $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
         }
 
         return $pattern ? : '(\w+)';
     }
+
+    /**
+     * Get I/O object
+     *
+     * @return IOInterface
+     */
+    private function getIO()
+    {
+        return $this->io;
+    }
 }
diff --git a/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php b/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php
new file mode 100644
index 0000000..7143e23
--- /dev/null
+++ b/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php
@@ -0,0 +1,10 @@
+<?php
+namespace Composer\Installers;
+
+class KodiCMSInstaller extends BaseInstaller
+{
+    protected $locations = array(
+        'plugin' => 'cms/plugins/{$name}/',
+        'media'  => 'cms/media/vendor/{$name}/'
+    );
+}
\ No newline at end of file
diff --git a/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php b/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
index 04be73c..3cdda6c 100644
--- a/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
+++ b/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
@@ -6,6 +6,7 @@ class MoodleInstaller extends BaseInstaller
     protected $locations = array(
         'mod'                => 'mod/{$name}/',
         'admin_report'       => 'admin/report/{$name}/',
+        'atto'               => 'lib/editor/atto/plugins/{$name}/',
         'tool'               => 'admin/tool/{$name}/',
         'assignment'         => 'mod/assignment/type/{$name}/',
         'assignsubmission'   => 'mod/assign/submission/{$name}/',
@@ -13,6 +14,9 @@ class MoodleInstaller extends BaseInstaller
         'auth'               => 'auth/{$name}/',
         'availability'       => 'availability/condition/{$name}/',
         'block'              => 'blocks/{$name}/',
+        'booktool'           => 'mod/book/tool/{$name}/',
+        'cachestore'         => 'cache/stores/{$name}/',
+        'cachelock'          => 'cache/locks/{$name}/',
         'calendartype'       => 'calendar/type/{$name}/',
         'format'             => 'course/format/{$name}/',
         'coursereport'       => 'course/report/{$name}/',
@@ -26,7 +30,11 @@ class MoodleInstaller extends BaseInstaller
         'gradereport'        => 'grade/report/{$name}/',
         'gradingform'        => 'grade/grading/form/{$name}/',
         'local'              => 'local/{$name}/',
+        'logstore'           => 'admin/tool/log/store/{$name}/',
+        'ltisource'          => 'mod/lti/source/{$name}/',
+        'ltiservice'         => 'mod/lti/service/{$name}/',
         'message'            => 'message/output/{$name}/',
+        'mnetservice'        => 'mnet/service/{$name}/',
         'plagiarism'         => 'plagiarism/{$name}/',
         'portfolio'          => 'portfolio/{$name}/',
         'qbehaviour'         => 'question/behaviour/{$name}/',
@@ -38,6 +46,7 @@ class MoodleInstaller extends BaseInstaller
         'repository'         => 'repository/{$name}/',
         'scormreport'        => 'mod/scorm/report/{$name}/',
         'theme'              => 'theme/{$name}/',
+        'tinymce'            => 'lib/editor/tinymce/plugins/{$name}/',
         'profilefield'       => 'user/profile/field/{$name}/',
         'webservice'         => 'webservice/{$name}/',
         'workshopallocation' => 'mod/workshop/allocation/{$name}/',
diff --git a/vendor/composer/installers/src/Composer/Installers/Plugin.php b/vendor/composer/installers/src/Composer/Installers/Plugin.php
new file mode 100644
index 0000000..5eb04af
--- /dev/null
+++ b/vendor/composer/installers/src/Composer/Installers/Plugin.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Composer\Installers;
+
+use Composer\Composer;
+use Composer\IO\IOInterface;
+use Composer\Plugin\PluginInterface;
+
+class Plugin implements PluginInterface
+{
+
+    public function activate(Composer $composer, IOInterface $io)
+    {
+        $installer = new Installer($io, $composer);
+        $composer->getInstallationManager()->addInstaller($installer);
+    }
+}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php
index 976bd9b..523e847 100644
--- a/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php
+++ b/vendor/composer/installers/tests/Composer/Installers/Test/CakePHPInstallerTest.php
@@ -100,7 +100,7 @@ public function testGetLocations() {
 
         $this->setCakephpVersion($rm, '~8.8');
         $result = $installer->getLocations();
-        $this->assertEquals('vendor/{$vendor}/{$name}/', $result['plugin']);
+        $this->assertContains('vendor/{$vendor}/{$name}/', $result['plugin']);
     }
 
     protected function setCakephpVersion($rm, $version) {
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/CraftInstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/CraftInstallerTest.php
new file mode 100644
index 0000000..31ccecd
--- /dev/null
+++ b/vendor/composer/installers/tests/Composer/Installers/Test/CraftInstallerTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace Composer\Installers\Test;
+
+use Composer\Installers\CraftInstaller;
+
+/**
+ * Tests for the CraftInstaller Class
+ *
+ * @coversDefaultClass Composer\Installers\CraftInstaller
+ */
+class CraftInstallerTest extends TestCase
+{
+    /** @var CraftInstaller */
+    private $installer;
+
+    /**
+     * Sets up the fixture, for example, instantiate the class-under-test.
+     *
+     * This method is called before a test is executed.
+     */
+    final public function setup()
+    {
+        $this->installer = new CraftInstaller();
+    }
+
+    /**
+     * @param string $packageName
+     * @param string $expectedName
+     *
+     * @covers ::inflectPackageVars
+     *
+     * @dataProvider provideExpectedInflectionResults
+     */
+    final public function testInflectPackageVars($packageName, $expectedName)
+    {
+        $installer = $this->installer;
+
+        $vars = array('name' => $packageName);
+        $expected = array('name' => $expectedName);
+
+        $actual = $installer->inflectPackageVars($vars);
+
+        $this->assertEquals($actual, $expected);
+    }
+
+    /**
+     * Provides various names for packages and the expected result after inflection
+     *
+     * @return array
+     */
+    final public function provideExpectedInflectionResults()
+    {
+        return array(
+            // lowercase
+            array('foo', 'foo'),
+            array('craftfoo', 'craftfoo'),
+            array('fooplugin', 'fooplugin'),
+            array('craftfooplugin', 'craftfooplugin'),
+            // lowercase - dash
+            array('craft-foo', 'foo'),
+            array('foo-plugin', 'foo'),
+            array('craft-foo-plugin', 'foo'),
+            // lowercase - underscore
+            array('craft_foo', 'craft_foo'),
+            array('foo_plugin', 'foo_plugin'),
+            array('craft_foo_plugin', 'craft_foo_plugin'),
+            // CamelCase
+            array('Foo', 'Foo'),
+            array('CraftFoo', 'CraftFoo'),
+            array('FooPlugin', 'FooPlugin'),
+            array('CraftFooPlugin', 'CraftFooPlugin'),
+            // CamelCase - Dash
+            array('Craft-Foo', 'Foo'),
+            array('Foo-Plugin', 'Foo'),
+            array('Craft-Foo-Plugin', 'Foo'),
+            // CamelCase - underscore
+            array('Craft_Foo', 'Craft_Foo'),
+            array('Foo_Plugin', 'Foo_Plugin'),
+            array('Craft_Foo_Plugin', 'Craft_Foo_Plugin'),
+        );
+    }
+}
diff --git a/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php b/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
index a516daf..610b8e6 100644
--- a/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
+++ b/vendor/composer/installers/tests/Composer/Installers/Test/InstallerTest.php
@@ -92,6 +92,7 @@ public function dataForTestSupport()
             array('bitrix-module', true),
             array('bitrix-component', true),
             array('bitrix-theme', true),
+            array('bonefish-package', true),
             array('cakephp', false),
             array('cakephp-', false),
             array('cakephp-app', false),
@@ -173,6 +174,8 @@ public function dataForTestSupport()
             array('zend-library', true),
             array('zikula-module', true),
             array('zikula-theme', true),
+            array('kodicms-plugin', true),
+            array('kodicms-media', true),
         );
     }
 
@@ -202,9 +205,10 @@ public function dataForTestInstallPath()
             array('annotatecms-module', 'addons/modules/my_module/', 'vysinsky/my_module'),
             array('annotatecms-component', 'addons/components/my_component/', 'vysinsky/my_component'),
             array('annotatecms-service', 'addons/services/my_service/', 'vysinsky/my_service'),
-            array('bitrix-module', 'local/modules/my_module/', 'author/my_module'),
-            array('bitrix-component', 'local/components/my_component/', 'author/my_component'),
-            array('bitrix-theme', 'local/templates/my_theme/', 'author/my_theme'),
+            array('bitrix-module', 'bitrix/modules/my_module/', 'author/my_module'),
+            array('bitrix-component', 'bitrix/components/my_component/', 'author/my_component'),
+            array('bitrix-theme', 'bitrix/templates/my_theme/', 'author/my_theme'),
+            array('bonefish-package', 'Packages/bonefish/package/', 'bonefish/package'),
             array('cakephp-plugin', 'Plugin/Ftp/', 'shama/ftp'),
             array('chef-cookbook', 'Chef/mre/my_cookbook/', 'mre/my_cookbook'),
             array('chef-role', 'Chef/roles/my_role/', 'mre/my_role'),
@@ -297,6 +301,8 @@ public function dataForTestInstallPath()
             array('zend-extra', 'extras/library/zend_test/', 'shama/zend_test'),
             array('zikula-module', 'modules/my-test_module/', 'my/test_module'),
             array('zikula-theme', 'themes/my-test_theme/', 'my/test_theme'),
+            array('kodicms-media', 'cms/media/vendor/my_media/', 'shama/my_media'),
+            array('kodicms-plugin', 'cms/plugins/my_plugin/', 'shama/my_plugin'),
         );
     }
 
diff --git a/vendor/composer/semver/CHANGELOG.md b/vendor/composer/semver/CHANGELOG.md
index 8352cb7..dd0ab51 100644
--- a/vendor/composer/semver/CHANGELOG.md
+++ b/vendor/composer/semver/CHANGELOG.md
@@ -3,6 +3,19 @@
 All notable changes to this project will be documented in this file.
 This project adheres to [Semantic Versioning](http://semver.org/).
 
+### [1.2.0] 2015-11-10
+
+  * Changed: allow multiple numerical identifiers in 'pre-release' version part.
+  * Changed: add more 'v' prefix support.
+
+### [1.1.0] 2015-11-03
+
+  * Changed: dropped redundant `test` namespace.
+  * Changed: minor adjustment in datetime parsing normalization.
+  * Changed: `ConstraintInterface` relaxed, setPrettyString is not required anymore.
+  * Changed: `AbstractConstraint` marked deprecated, will be removed in 2.0.
+  * Changed: `Constraint` is now extensible.
+
 ### [1.0.0] 2015-09-21
 
   * Break: `VersionConstraint` renamed to `Constraint`.
@@ -13,7 +26,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
   * Changed: `VersionParser::parseConstraints` allows (but ignores) prefixing numeric versions with a 'v' now.
   * Changed: Fixed namespace(s) of test files.
   * Changed: `Comparator::compare` no longer throws `InvalidArgumentException`.
-  * Changed: `VersionConstraint` now throws `InvalidArgumentException`.
+  * Changed: `Constraint` now throws `InvalidArgumentException`.
 
 ### [0.1.0] 2015-07-23
 
@@ -26,3 +39,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
     - Namespace: `Composer\Test\Package\Version` -> `Composer\Test\Semver`
     - Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
   * Changed: code style using php-cs-fixer.
+
+[1.2.0]: https://github.com/composer/semver/compare/1.1.0...1.2.0
+[1.1.0]: https://github.com/composer/semver/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/composer/semver/compare/0.1.0...1.0.0
+[0.1.0]: https://github.com/composer/semver/compare/5e0b9a4da...0.1.0
diff --git a/vendor/composer/semver/README.md b/vendor/composer/semver/README.md
index c8b6979..bd2924f 100644
--- a/vendor/composer/semver/README.md
+++ b/vendor/composer/semver/README.md
@@ -56,7 +56,7 @@ Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0
 
 ### Semver
 
-The `Composer\Semver\Semver` class providers the following methods:
+The `Composer\Semver\Semver` class provides the following methods:
 
 * satisfies($version, $constraints)
 * satisfiedBy($constraint, array $versions)
diff --git a/vendor/composer/semver/composer.json b/vendor/composer/semver/composer.json
index b996186..b0400cd 100644
--- a/vendor/composer/semver/composer.json
+++ b/vendor/composer/semver/composer.json
@@ -22,7 +22,8 @@
         },
         {
             "name": "Rob Bast",
-            "email": "rob.bast@gmail.com"
+            "email": "rob.bast@gmail.com",
+            "homepage": "http://robbast.nl"
         }
     ],
     "support": {
@@ -30,11 +31,11 @@
         "issues": "https://github.com/composer/semver/issues"
     },
     "require": {
-        "php": ">=5.3.2"
+        "php": "^5.3.2 || ^7.0"
     },
     "require-dev": {
-        "phpunit/phpunit": "~4.5",
-        "phpunit/phpunit-mock-objects": "~2.3"
+        "phpunit/phpunit": "^4.5 || ^5.0.5",
+        "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
     },
     "autoload": {
         "psr-4": {
@@ -43,12 +44,12 @@
     },
     "autoload-dev": {
         "psr-4": {
-            "Composer\\Semver\\Test\\": "tests"
+            "Composer\\Semver\\": "tests"
         }
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "0.1-dev"
+            "dev-master": "1.x-dev"
         }
     },
     "scripts": {
diff --git a/vendor/composer/semver/src/Constraint/AbstractConstraint.php b/vendor/composer/semver/src/Constraint/AbstractConstraint.php
index ccd834f..be83f75 100644
--- a/vendor/composer/semver/src/Constraint/AbstractConstraint.php
+++ b/vendor/composer/semver/src/Constraint/AbstractConstraint.php
@@ -11,6 +11,8 @@
 
 namespace Composer\Semver\Constraint;
 
+trigger_error('The ' . __CLASS__ . ' abstract class is deprecated, there is no replacement for it, it will be removed in the next major version.', E_USER_DEPRECATED);
+
 /**
  * Base constraint class.
  */
@@ -26,17 +28,13 @@
      */
     public function matches(ConstraintInterface $provider)
     {
-        if ($provider instanceof MultiConstraint) {
-            // turn matching around to find a match
-            return $provider->matches($this);
-        }
-
         if ($provider instanceof $this) {
             // see note at bottom of this class declaration
             return $this->matchSpecific($provider);
         }
 
-        return true;
+        // turn matching around to find a match
+        return $provider->matches($this);
     }
 
     /**
diff --git a/vendor/composer/semver/src/Constraint/Constraint.php b/vendor/composer/semver/src/Constraint/Constraint.php
index 8bc68db..7a21eb4 100644
--- a/vendor/composer/semver/src/Constraint/Constraint.php
+++ b/vendor/composer/semver/src/Constraint/Constraint.php
@@ -14,7 +14,7 @@
 /**
  * Defines a constraint.
  */
-class Constraint extends AbstractConstraint
+class Constraint implements ConstraintInterface
 {
     /* operator integer values */
     const OP_EQ = 0;
@@ -55,10 +55,48 @@ class Constraint extends AbstractConstraint
     );
 
     /** @var string */
-    private $operator;
+    protected $operator;
 
     /** @var string */
-    private $version;
+    protected $version;
+
+    /** @var string */
+    protected $prettyString;
+
+    /**
+     * @param ConstraintInterface $provider
+     *
+     * @return bool
+     */
+    public function matches(ConstraintInterface $provider)
+    {
+        if ($provider instanceof $this) {
+            return $this->matchSpecific($provider);
+        }
+
+        // turn matching around to find a match
+        return $provider->matches($this);
+    }
+
+    /**
+     * @param string $prettyString
+     */
+    public function setPrettyString($prettyString)
+    {
+        $this->prettyString = $prettyString;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPrettyString()
+    {
+        if ($this->prettyString) {
+            return $this->prettyString;
+        }
+
+        return $this->__toString();
+    }
 
     /**
      * Get all supported comparison operators.
diff --git a/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/vendor/composer/semver/src/Constraint/ConstraintInterface.php
index 78c099c..7cb13b6 100644
--- a/vendor/composer/semver/src/Constraint/ConstraintInterface.php
+++ b/vendor/composer/semver/src/Constraint/ConstraintInterface.php
@@ -21,11 +21,6 @@
     public function matches(ConstraintInterface $provider);
 
     /**
-     * @param string $prettyString
-     */
-    public function setPrettyString($prettyString);
-
-    /**
      * @return string
      */
     public function getPrettyString();
diff --git a/vendor/composer/semver/src/VersionParser.php b/vendor/composer/semver/src/VersionParser.php
index 269aee9..d932f94 100644
--- a/vendor/composer/semver/src/VersionParser.php
+++ b/vendor/composer/semver/src/VersionParser.php
@@ -23,13 +23,23 @@
  */
 class VersionParser
 {
-    /** @var string */
-    private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)(?:[.-]?(\d+))?)?([.-]?dev)?';
+    /**
+     * Regex to match pre-release data (sort of).
+     *
+     * Due to backwards compatibility:
+     *   - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted.
+     *   - Only stabilities as recognized by Composer are allowed to precede a numerical identifier.
+     *   - Numerical-only pre-release identifiers are not supported, see tests.
+     *
+     *                        |--------------|
+     * [major].[minor].[patch] -[pre-release] +[build-metadata]
+     *
+     * @var string
+     */
+    private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?';
 
     /** @var array */
-    private static $stabilities = array(
-        'stable', 'RC', 'beta', 'alpha', 'dev',
-    );
+    private static $stabilities = array('stable', 'RC', 'beta', 'alpha', 'dev');
 
     /**
      * Returns the stability of a version.
@@ -96,12 +106,12 @@ public function normalize($version, $fullVersion = null)
         }
 
         // strip off aliasing
-        if (preg_match('{^([^,\s]+) +as +([^,\s]+)$}', $version, $match)) {
+        if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) {
             $version = $match[1];
         }
 
         // strip off build metadata
-        if (preg_match('{^([^,\s+]+)\+[^\s]+$}', $version, $match)) {
+        if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) {
             $version = $match[1];
         }
 
@@ -115,7 +125,7 @@ public function normalize($version, $fullVersion = null)
         }
 
         // match classical versioning
-        if (preg_match('{^v?(\d{1,5})(\.\d+)?(\.\d+)?(\.\d+)?' . self::$modifierRegex . '$}i', $version, $matches)) {
+        if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) {
             $version = $matches[1]
                 . (!empty($matches[2]) ? $matches[2] : '.0')
                 . (!empty($matches[3]) ? $matches[3] : '.0')
@@ -123,7 +133,7 @@ public function normalize($version, $fullVersion = null)
             $index = 5;
         // match date(time) based versioning
         } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) {
-            $version = preg_replace('{\D}', '-', $matches[1]);
+            $version = preg_replace('{\D}', '.', $matches[1]);
             $index = 2;
         }
 
@@ -133,7 +143,7 @@ public function normalize($version, $fullVersion = null)
                 if ('stable' === $matches[$index]) {
                     return $version;
                 }
-                $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? $matches[$index + 1] : '');
+                $version .= '-' . $this->expandStability($matches[$index]) . (!empty($matches[$index + 1]) ? ltrim($matches[$index + 1], '.-') : '');
             }
 
             if (!empty($matches[$index + 2])) {
@@ -170,7 +180,7 @@ public function normalize($version, $fullVersion = null)
      */
     public function parseNumericAliasPrefix($branch)
     {
-        if (preg_match('{^(?P<version>(\d+\\.)*\d+)(?:\.x)?-dev$}i', $branch, $matches)) {
+        if (preg_match('{^(?P<version>(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) {
             return $matches['version'] . '.';
         }
 
@@ -192,7 +202,7 @@ public function normalizeBranch($name)
             return $this->normalize($name);
         }
 
-        if (preg_match('{^v?(\d+)(\.(?:\d+|[xX*]))?(\.(?:\d+|[xX*]))?(\.(?:\d+|[xX*]))?$}i', $name, $matches)) {
+        if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) {
             $version = '';
             for ($i = 1; $i < 5; ++$i) {
                 $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x';
@@ -205,7 +215,7 @@ public function normalizeBranch($name)
     }
 
     /**
-     * Parses as constraint string into LinkConstraint objects.
+     * Parses a constraint string into MultiConstraint and/or Constraint objects.
      *
      * @param string $constraints
      *
@@ -274,11 +284,11 @@ private function parseConstraint($constraint)
             }
         }
 
-        if (preg_match('{^[xX*](\.[xX*])*$}i', $constraint)) {
+        if (preg_match('{^v?[xX*](\.[xX*])*$}i', $constraint)) {
             return array(new EmptyConstraint());
         }
 
-        $versionRegex = 'v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?' . self::$modifierRegex . '(?:\+[^\s]+)?';
+        $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?' . self::$modifierRegex . '(?:\+[^\s]+)?';
 
         // Tilde Range
         //
@@ -372,7 +382,7 @@ private function parseConstraint($constraint)
         //
         // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple.
         // A partial version range is treated as an X-Range, so the special character is in fact optional.
-        if (preg_match('{^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])+$}', $constraint, $matches)) {
+        if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) {
             if (isset($matches[3]) && '' !== $matches[3]) {
                 $position = 3;
             } elseif (isset($matches[2]) && '' !== $matches[2]) {
diff --git a/vendor/doctrine/cache/.travis.yml b/vendor/doctrine/cache/.travis.yml
index 2952a48..5668a81 100644
--- a/vendor/doctrine/cache/.travis.yml
+++ b/vendor/doctrine/cache/.travis.yml
@@ -1,11 +1,19 @@
 language: php
 
+sudo: false
+
+cache:
+    directories:
+        - vendor
+        - $HOME/.composer/cache
+
 php:
-  - 5.3
-  - 5.4
-  - 5.5
-  - 5.6
-  - hhvm
+    - 5.3
+    - 5.4
+    - 5.5
+    - 5.6
+    - 7.0
+    - hhvm
 
 services:
     - riak
@@ -14,13 +22,13 @@ services:
     - redis-server
 
 before_install:
-    - sh -c "if [ $TRAVIS_PHP_VERSION != 'hhvm' ]; then pecl install riak-beta; fi"
-    - sh -c "if [[ $TRAVIS_PHP_VERSION != 'hhvm' && `php-config --vernum` -ge 50500 ]] ; then pecl config-set preferred_state beta; printf "yes\n" | pecl install apcu ; else echo 'extension="apc.so"' >> ./tests/travis/php.ini ;fi"
-    - composer self-update
-    - sh -c "if [ $TRAVIS_PHP_VERSION != 'hhvm' ]; then phpenv config-add ./tests/travis/php.ini; fi"
+    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' && $TRAVIS_PHP_VERSION != '7.0' ]]; then pecl install riak-beta; fi;
+    - if [[ $TRAVIS_PHP_VERSION =~ 5.[34] ]] ; then echo 'extension="apc.so"' >> ./tests/travis/php.ini; fi;
+    - if [[ $TRAVIS_PHP_VERSION =~ 5.[56] ]] ; then pecl config-set preferred_state beta; printf "yes\n" | pecl install apcu; fi;
+    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then phpenv config-add ./tests/travis/php.ini; fi;
 
 install:
-    - composer --prefer-source --dev install
+    - travis_retry composer install
 
 script:
     - ./vendor/bin/phpunit -c ./tests/travis/phpunit.travis.xml -v
@@ -29,5 +37,6 @@ after_script:
     - php vendor/bin/coveralls -v
 
 matrix:
-  allow_failures:
-    - php: hhvm
+    fast_finish: true
+    allow_failures:
+        - php: hhvm
diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE
index 4a91f0b..8c38cc1 100644
--- a/vendor/doctrine/cache/LICENSE
+++ b/vendor/doctrine/cache/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2006-2012 Doctrine Project
+Copyright (c) 2006-2015 Doctrine Project
 
 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
diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json
index f3caa7a..bd7a7ec 100644
--- a/vendor/doctrine/cache/composer.json
+++ b/vendor/doctrine/cache/composer.json
@@ -24,7 +24,10 @@
         "doctrine/common": ">2.2,<2.4"
     },
     "autoload": {
-        "psr-0": { "Doctrine\\Common\\Cache\\": "lib/" }
+        "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" }
+    },
+    "autoload-dev": {
+        "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine/Tests" }
     },
     "extra": {
         "branch-alias": {
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
index abd5e71..036583e 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
@@ -53,7 +53,7 @@ protected function doContains($id)
      */
     protected function doSave($id, $data, $lifeTime = 0)
     {
-        return (bool) apc_store($id, $data, (int) $lifeTime);
+        return apc_store($id, $data, $lifeTime);
     }
 
     /**
@@ -61,7 +61,8 @@ protected function doSave($id, $data, $lifeTime = 0)
      */
     protected function doDelete($id)
     {
-        return apc_delete($id);
+        // apc_delete returns false if the id does not exist
+        return apc_delete($id) || ! apc_exists($id);
     }
 
     /**
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
index 205a123..89fe323 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
@@ -59,19 +59,22 @@ public function fetch($id);
      *
      * @param string $id The cache id of the entry to check for.
      *
-     * @return boolean TRUE if a cache entry exists for the given cache id, FALSE otherwise.
+     * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
      */
     public function contains($id);
 
     /**
      * Puts data into the cache.
      *
+     * If a cache entry with the given id already exists, its data will be replaced.
+     *
      * @param string $id       The cache id.
      * @param mixed  $data     The cache entry/data.
-     * @param int    $lifeTime The cache lifetime.
-     *                         If != 0, sets a specific lifetime for this cache entry (0 => infinite lifeTime).
+     * @param int    $lifeTime The lifetime in number of seconds for this cache entry.
+     *                         If zero (the default), the entry never expires (although it may be deleted from the cache
+     *                         to make place for other entries).
      *
-     * @return boolean TRUE if the entry was successfully stored in the cache, FALSE otherwise.
+     * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
      */
     public function save($id, $data, $lifeTime = 0);
 
@@ -80,7 +83,8 @@ public function save($id, $data, $lifeTime = 0);
      *
      * @param string $id The cache id.
      *
-     * @return boolean TRUE if the cache entry was successfully deleted, FALSE otherwise.
+     * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
+     *              Deleting a non-existing entry is considered successful.
      */
     public function delete($id);
 
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
index a172a4c..cc7053a 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
@@ -83,6 +83,10 @@ public function fetch($id)
      */
     public function fetchMultiple(array $keys)
     {
+        if (empty($keys)) {
+            return array();
+        }
+        
         // note: the array_combine() is in place to keep an association between our $keys and the $namespacedKeys
         $namespacedKeys = array_combine($keys, array_map(array($this, 'getNamespacedId'), $keys));
         $items          = $this->doFetchMultiple($namespacedKeys);
@@ -91,7 +95,7 @@ public function fetchMultiple(array $keys)
         // no internal array function supports this sort of mapping: needs to be iterative
         // this filters and combines keys in one pass
         foreach ($namespacedKeys as $requestedKey => $namespacedKey) {
-            if (isset($items[$namespacedKey])) {
+            if (isset($items[$namespacedKey]) || array_key_exists($namespacedKey, $items)) {
                 $foundItems[$requestedKey] = $items[$namespacedKey];
             }
         }
@@ -147,9 +151,13 @@ public function deleteAll()
         $namespaceCacheKey = $this->getNamespaceCacheKey();
         $namespaceVersion  = $this->getNamespaceVersion() + 1;
 
-        $this->namespaceVersion = $namespaceVersion;
+        if ($this->doSave($namespaceCacheKey, $namespaceVersion)) {
+            $this->namespaceVersion = $namespaceVersion;
+
+            return true;
+        }
 
-        return $this->doSave($namespaceCacheKey, $namespaceVersion);
+        return false;
     }
 
     /**
@@ -188,15 +196,7 @@ private function getNamespaceVersion()
         }
 
         $namespaceCacheKey = $this->getNamespaceCacheKey();
-        $namespaceVersion = $this->doFetch($namespaceCacheKey);
-
-        if (false === $namespaceVersion) {
-            $namespaceVersion = 1;
-
-            $this->doSave($namespaceCacheKey, $namespaceVersion);
-        }
-
-        $this->namespaceVersion = $namespaceVersion;
+        $this->namespaceVersion = $this->doFetch($namespaceCacheKey) ?: 1;
 
         return $this->namespaceVersion;
     }
@@ -225,7 +225,7 @@ protected function doFetchMultiple(array $keys)
      *
      * @param string $id The id of the cache entry to fetch.
      *
-     * @return mixed|boolean The cached data or FALSE, if no cache entry exists for the given id.
+     * @return mixed|false The cached data or FALSE, if no cache entry exists for the given id.
      */
     abstract protected function doFetch($id);
 
@@ -234,7 +234,7 @@ protected function doFetchMultiple(array $keys)
      *
      * @param string $id The cache id of the entry to check for.
      *
-     * @return boolean TRUE if a cache entry exists for the given cache id, FALSE otherwise.
+     * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
      */
     abstract protected function doContains($id);
 
@@ -246,7 +246,7 @@ protected function doFetchMultiple(array $keys)
      * @param int    $lifeTime The lifetime. If != 0, sets a specific lifetime for this
      *                           cache entry (0 => infinite lifeTime).
      *
-     * @return boolean TRUE if the entry was successfully stored in the cache, FALSE otherwise.
+     * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
      */
     abstract protected function doSave($id, $data, $lifeTime = 0);
 
@@ -255,14 +255,14 @@ protected function doFetchMultiple(array $keys)
      *
      * @param string $id The cache id.
      *
-     * @return boolean TRUE if the cache entry was successfully deleted, FALSE otherwise.
+     * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
      */
     abstract protected function doDelete($id);
 
     /**
      * Flushes all cache entries.
      *
-     * @return boolean TRUE if the cache entries were successfully flushed, FALSE otherwise.
+     * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
      */
     abstract protected function doFlush();
 
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
index d7b4358..3a91eaf 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
@@ -34,7 +34,7 @@
     /**
      * Deletes all cache entries in the current cache namespace.
      *
-     * @return boolean TRUE if the cache entries were successfully deleted, FALSE otherwise.
+     * @return bool TRUE if the cache entries were successfully deleted, FALSE otherwise.
      */
     public function deleteAll();
 }
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
index 9ad3ce2..6aa2712 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
@@ -24,6 +24,7 @@
  *
  * @since  2.3
  * @author Fabio B. Silva <fabio.bat.silva@gmail.com>
+ * @author Tobias Schultze <http://tobion.de>
  */
 abstract class FileCache extends CacheProvider
 {
@@ -42,19 +43,6 @@
     private $extension;
 
     /**
-     * @var string[] regular expressions for replacing disallowed characters in file name
-     */
-    private $disallowedCharacterPatterns = array(
-        '/\-/', // replaced to disambiguate original `-` and `-` derived from replacements
-        '/[^a-zA-Z0-9\-_\[\]]/' // also excludes non-ascii chars (not supported, depending on FS)
-    );
-
-    /**
-     * @var string[] replacements for disallowed file characters
-     */
-    private $replacementCharacters = array('__', '-');
-
-    /**
      * @var int
      */
     private $umask;
@@ -110,7 +98,7 @@ public function getDirectory()
     /**
      * Gets the cache file extension.
      *
-     * @return string|null
+     * @return string
      */
     public function getExtension()
     {
@@ -124,11 +112,23 @@ public function getExtension()
      */
     protected function getFilename($id)
     {
+        $hash = hash('sha256', $id);
+
+        // This ensures that the filename is unique and that there are no invalid chars in it.
+        if ('' === $id || strlen($id) > ((255 - strlen($this->extension)) / 2)) {
+            // Most filesystems have a limit of 255 chars for each path component. So if the id in hex representation
+            // plus the extension would surpass the limit, we use the hash instead. The prefix prevents collisions
+            // between the hash and bin2hex.
+            $filename = '_' . $hash;
+        } else {
+            $filename = bin2hex($id);
+        }
+
         return $this->directory
             . DIRECTORY_SEPARATOR
-            . implode(str_split(hash('sha256', $id), 2), DIRECTORY_SEPARATOR)
+            . substr($hash, 0, 2)
             . DIRECTORY_SEPARATOR
-            . preg_replace($this->disallowedCharacterPatterns, $this->replacementCharacters, $id)
+            . $filename
             . $this->extension;
     }
 
@@ -137,7 +137,9 @@ protected function getFilename($id)
      */
     protected function doDelete($id)
     {
-        return @unlink($this->getFilename($id));
+        $filename = $this->getFilename($id);
+
+        return @unlink($filename) || ! file_exists($filename);
     }
 
     /**
@@ -146,7 +148,16 @@ protected function doDelete($id)
     protected function doFlush()
     {
         foreach ($this->getIterator() as $name => $file) {
-            @unlink($name);
+            if ($file->isDir()) {
+                // Remove the intermediate directories which have been created to balance the tree. It only takes effect
+                // if the directory is empty. If several caches share the same directory but with different file extensions,
+                // the other ones are not removed.
+                @rmdir($name);
+            } elseif ($this->isFilenameEndingWithExtension($name)) {
+                // If an extension is set, only remove files which end with the given extension.
+                // If no extension is set, we have no other choice than removing everything.
+                @unlink($name);
+            }
         }
 
         return true;
@@ -158,8 +169,10 @@ protected function doFlush()
     protected function doGetStats()
     {
         $usage = 0;
-        foreach ($this->getIterator() as $file) {
-            $usage += $file->getSize();
+        foreach ($this->getIterator() as $name => $file) {
+            if (! $file->isDir() && $this->isFilenameEndingWithExtension($name)) {
+                $usage += $file->getSize();
+            }
         }
 
         $free = disk_free_space($this->directory);
@@ -229,9 +242,20 @@ protected function writeFile($filename, $content)
      */
     private function getIterator()
     {
-        return new \RegexIterator(
-            new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory)),
-            '/^.+' . preg_quote($this->extension, '/') . '$/i'
+        return new \RecursiveIteratorIterator(
+            new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS),
+            \RecursiveIteratorIterator::CHILD_FIRST
         );
     }
+
+    /**
+     * @param string $name The filename
+     *
+     * @return bool
+     */
+    private function isFilenameEndingWithExtension($name)
+    {
+        return '' === $this->extension
+            || strrpos($name, $this->extension) === (strlen($name) - strlen($this->extension));
+    }
 }
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
index 29d5e07..d988294 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
@@ -53,7 +53,7 @@ protected function doFetch($id)
         $resource = fopen($filename, "r");
 
         if (false !== ($line = fgets($resource))) {
-            $lifetime = (integer) $line;
+            $lifetime = (int) $line;
         }
 
         if ($lifetime !== 0 && $lifetime < time()) {
@@ -86,7 +86,7 @@ protected function doContains($id)
         $resource = fopen($filename, "r");
 
         if (false !== ($line = fgets($resource))) {
-            $lifetime = (integer) $line;
+            $lifetime = (int) $line;
         }
 
         fclose($resource);
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
index e4e606b..4311d4f 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
@@ -31,7 +31,7 @@
     /**
      * Flushes all cache entries, globally.
      *
-     * @return boolean TRUE if the cache entries were successfully flushed, FALSE otherwise.
+     * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
      */
     public function flushAll();
 }
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
index c5098fd..8afaeea 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
@@ -97,7 +97,8 @@ protected function doSave($id, $data, $lifeTime = 0)
      */
     protected function doDelete($id)
     {
-        return $this->memcache->delete($id);
+        // Memcache::delete() returns false if entry does not exist
+        return $this->memcache->delete($id) || ! $this->doContains($id);
     }
 
     /**
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
index 040c26c..deebe5a 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
@@ -82,7 +82,8 @@ protected function doFetchMultiple(array $keys)
      */
     protected function doContains($id)
     {
-        return (false !== $this->memcached->get($id));
+        return false !== $this->memcached->get($id)
+            || $this->memcached->getResultCode() !== Memcached::RES_NOTFOUND;
     }
 
     /**
@@ -101,7 +102,8 @@ protected function doSave($id, $data, $lifeTime = 0)
      */
     protected function doDelete($id)
     {
-        return $this->memcached->delete($id);
+        return $this->memcached->delete($id)
+            || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
     }
 
     /**
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
index 0c7ac0a..a268a5b 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
@@ -41,7 +41,7 @@ class MongoDBCache extends CacheProvider
      * cache entry should expire.
      *
      * With MongoDB 2.2+, entries can be automatically deleted by MongoDB by
-     * indexing this field wit the "expireAfterSeconds" option equal to zero.
+     * indexing this field with the "expireAfterSeconds" option equal to zero.
      * This will direct MongoDB to regularly query for and delete any entries
      * whose date is older than the current time. Entries without a date value
      * in this field will be ignored.
@@ -138,7 +138,7 @@ protected function doDelete($id)
     {
         $result = $this->collection->remove(array('_id' => $id));
 
-        return isset($result['n']) ? $result['n'] == 1 : true;
+        return isset($result['ok']) ? $result['ok'] == 1 : true;
     }
 
     /**
@@ -170,8 +170,8 @@ protected function doGetStats()
         return array(
             Cache::STATS_HITS => null,
             Cache::STATS_MISSES => null,
-            Cache::STATS_UPTIME => (isset($serverStatus['uptime']) ? (integer) $serverStatus['uptime'] : null),
-            Cache::STATS_MEMORY_USAGE => (isset($collStats['size']) ? (integer) $collStats['size'] : null),
+            Cache::STATS_UPTIME => (isset($serverStatus['uptime']) ? (int) $serverStatus['uptime'] : null),
+            Cache::STATS_MEMORY_USAGE => (isset($collStats['size']) ? (int) $collStats['size'] : null),
             Cache::STATS_MEMORY_AVAILABLE  => null,
         );
     }
@@ -180,7 +180,8 @@ protected function doGetStats()
      * Check if the document is expired.
      *
      * @param array $document
-     * @return boolean
+     *
+     * @return bool
      */
     private function isExpired(array $document)
     {
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
index 823477e..e7da2a6 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
@@ -2,7 +2,7 @@
 
 namespace Doctrine\Common\Cache;
 
-use Predis\Client;
+use Predis\ClientInterface;
 
 /**
  * Predis cache provider.
@@ -12,16 +12,16 @@
 class PredisCache extends CacheProvider
 {
     /**
-     * @var Client
+     * @var ClientInterface
      */
     private $client;
 
     /**
-     * @param Client $client
+     * @param ClientInterface $client
      *
      * @return void
      */
-    public function __construct(Client $client)
+    public function __construct(ClientInterface $client)
     {
         $this->client = $client;
     }
@@ -46,8 +46,9 @@ protected function doFetchMultiple(array $keys)
     {
         $fetchedItems = call_user_func_array(array($this->client, 'mget'), $keys);
 
-        return array_filter(array_combine($keys, array_map('unserialize', $fetchedItems)));
+        return array_map('unserialize', array_filter(array_combine($keys, $fetchedItems)));
     }
+
     /**
      * {@inheritdoc}
      */
@@ -76,7 +77,7 @@ protected function doSave($id, $data, $lifeTime = 0)
      */
     protected function doDelete($id)
     {
-        return $this->client->del($id) > 0;
+        return $this->client->del($id) >= 0;
     }
 
     /**
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
index 50d7c91..c64890e 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
@@ -71,7 +71,14 @@ protected function doFetch($id)
      */
     protected function doFetchMultiple(array $keys)
     {
-        return array_filter(array_combine($keys, $this->redis->mget($keys)));
+        $fetchedItems = $this->redis->mget($keys);
+
+        return array_filter(
+            array_combine($keys, $fetchedItems),
+            function ($value) {
+                return $value !== false;
+            }
+        );
     }
 
     /**
@@ -99,7 +106,7 @@ protected function doSave($id, $data, $lifeTime = 0)
      */
     protected function doDelete($id)
     {
-        return $this->redis->delete($id) > 0;
+        return $this->redis->delete($id) >= 0;
     }
 
     /**
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
index 8bb6b4b..0baa3f2 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
@@ -202,7 +202,7 @@ protected function doGetStats()
      *
      * @param \Riak\Object $object
      *
-     * @return boolean
+     * @return bool
      */
     private function isExpired(Object $object)
     {
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
index b12978c..0bf6e4d 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
@@ -98,7 +98,7 @@ protected function doFetch($id)
      */
     protected function doContains($id)
     {
-        return (boolean) $this->findById($id, false);
+        return null !== $this->findById($id, false);
     }
 
     /**
@@ -157,7 +157,7 @@ protected function doGetStats()
      * Find a single row by ID.
      *
      * @param mixed $id
-     * @param boolean $includeData
+     * @param bool $includeData
      *
      * @return array|null
      */
@@ -208,7 +208,8 @@ private function getFields()
      * Check if the item is expired.
      *
      * @param array $item
-     * @return boolean
+     *
+     * @return bool
      */
     private function isExpired(array $item)
     {
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
index d742fa0..eeab125 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
@@ -21,5 +21,5 @@
 
 class Version
 {
-    const VERSION = '1.4.0-DEV';
+    const VERSION = '1.5.1';
 }
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
index ae32772..6f563aa 100644
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
@@ -53,7 +53,7 @@ protected function doContains($id)
      */
     protected function doSave($id, $data, $lifeTime = 0)
     {
-        return (bool) wincache_ucache_set($id, $data, (int) $lifeTime);
+        return wincache_ucache_set($id, $data, $lifeTime);
     }
 
     /**
@@ -75,6 +75,14 @@ protected function doFlush()
     /**
      * {@inheritdoc}
      */
+    protected function doFetchMultiple(array $keys)
+    {
+        return wincache_ucache_get($keys);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
     protected function doGetStats()
     {
         $info    = wincache_ucache_info();
diff --git a/vendor/doctrine/cache/phpunit.xml.dist b/vendor/doctrine/cache/phpunit.xml.dist
index 34d7f4c..e3401f2 100644
--- a/vendor/doctrine/cache/phpunit.xml.dist
+++ b/vendor/doctrine/cache/phpunit.xml.dist
@@ -1,16 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         syntaxCheck="false"
-         bootstrap="./tests/Doctrine/Tests/TestInit.php"
+<phpunit
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
+    backupGlobals="false"
+    colors="true"
+    convertErrorsToExceptions="true"
+    convertNoticesToExceptions="true"
+    convertWarningsToExceptions="true"
+    bootstrap="vendor/autoload.php"
 >
+    <php>
+        <ini name="error_reporting" value="-1" />
+    </php>
+
     <testsuites>
         <testsuite name="Doctrine Cache Test Suite">
             <directory>./tests/Doctrine/</directory>
diff --git a/vendor/doctrine/inflector/.travis.yml b/vendor/doctrine/inflector/.travis.yml
index 6b1d8ff..9ec68f7 100644
--- a/vendor/doctrine/inflector/.travis.yml
+++ b/vendor/doctrine/inflector/.travis.yml
@@ -1,11 +1,21 @@
 language: php
 
+sudo: false
+
+cache:
+  directory:
+    - $HOME/.composer/cache
+
 php:
   - 5.3
   - 5.4
   - 5.5
   - 5.6
+  - 7.0
   - hhvm
 
 install:
-    - composer --prefer-source install
+  - composer install -n
+
+script:
+  - phpunit
diff --git a/vendor/doctrine/inflector/LICENSE b/vendor/doctrine/inflector/LICENSE
index 5e781fc..8c38cc1 100644
--- a/vendor/doctrine/inflector/LICENSE
+++ b/vendor/doctrine/inflector/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2006-2013 Doctrine Project
+Copyright (c) 2006-2015 Doctrine Project
 
 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
diff --git a/vendor/doctrine/inflector/composer.json b/vendor/doctrine/inflector/composer.json
index a29c68c..7e5b2ef 100644
--- a/vendor/doctrine/inflector/composer.json
+++ b/vendor/doctrine/inflector/composer.json
@@ -23,7 +23,7 @@
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "1.0.x-dev"
+            "dev-master": "1.1.x-dev"
         }
     }
 }
diff --git a/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php b/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php
index b007b21..a53828a 100644
--- a/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php
+++ b/vendor/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php
@@ -56,11 +56,12 @@ class Inflector
             '/(p)erson$/i' => '\1eople',
             '/(m)an$/i' => '\1en',
             '/(c)hild$/i' => '\1hildren',
-            '/(buffal|tomat)o$/i' => '\1\2oes',
+            '/(f)oot$/i' => '\1eet',
+            '/(buffal|her|potat|tomat|volcan)o$/i' => '\1\2oes',
             '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|vir)us$/i' => '\1i',
             '/us$/i' => 'uses',
             '/(alias)$/i' => '\1es',
-            '/(ax|cris|test)is$/i' => '\1es',
+            '/(analys|ax|cris|test|thes)is$/i' => '\1es',
             '/s$/' => 's',
             '/^$/' => '',
             '/$/' => 's',
@@ -70,27 +71,42 @@ class Inflector
         ),
         'irregular' => array(
             'atlas' => 'atlases',
+            'axe' => 'axes',
             'beef' => 'beefs',
             'brother' => 'brothers',
             'cafe' => 'cafes',
+            'chateau' => 'chateaux',
             'child' => 'children',
             'cookie' => 'cookies',
             'corpus' => 'corpuses',
             'cow' => 'cows',
-            'criteria' => 'criterion',
+            'criterion' => 'criteria',
+            'curriculum' => 'curricula',
+            'demo' => 'demos',
+            'domino' => 'dominoes',
+            'echo' => 'echoes',
+            'foot' => 'feet',
+            'fungus' => 'fungi',
             'ganglion' => 'ganglions',
             'genie' => 'genies',
             'genus' => 'genera',
             'graffito' => 'graffiti',
+            'hippopotamus' => 'hippopotami',
             'hoof' => 'hoofs',
             'human' => 'humans',
+            'iris' => 'irises',
+            'leaf' => 'leaves',
             'loaf' => 'loaves',
             'man' => 'men',
+            'medium' => 'media',
+            'memorandum' => 'memoranda',
             'money' => 'monies',
             'mongoose' => 'mongooses',
+            'motto' => 'mottoes',
             'move' => 'moves',
             'mythos' => 'mythoi',
             'niche' => 'niches',
+            'nucleus' => 'nuclei',
             'numen' => 'numina',
             'occiput' => 'occiputs',
             'octopus' => 'octopuses',
@@ -98,11 +114,19 @@ class Inflector
             'ox' => 'oxen',
             'penis' => 'penises',
             'person' => 'people',
+            'plateau' => 'plateaux',
+            'runner-up' => 'runners-up',
             'sex' => 'sexes',
             'soliloquy' => 'soliloquies',
+            'son-in-law' => 'sons-in-law',
+            'syllabus' => 'syllabi',
             'testis' => 'testes',
+            'thief' => 'thieves',
+            'tooth' => 'teeth',
+            'tornado' => 'tornadoes',
             'trilby' => 'trilbys',
             'turf' => 'turfs',
+            'volcano' => 'volcanoes',
         )
     );
 
@@ -120,9 +144,10 @@ class Inflector
             '/(vert|ind)ices$/i' => '\1ex',
             '/^(ox)en/i' => '\1',
             '/(alias)(es)*$/i' => '\1',
+            '/(buffal|her|potat|tomat|volcan)oes$/i' => '\1o',
             '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|viri?)i$/i' => '\1us',
             '/([ftw]ax)es/i' => '\1',
-            '/(cris|ax|test)es$/i' => '\1is',
+            '/(analys|ax|cris|test|thes)es$/i' => '\1is',
             '/(shoe|slave)s$/i' => '\1',
             '/(o)es$/i' => '\1',
             '/ouses$/' => 'ouse',
@@ -143,6 +168,7 @@ class Inflector
             '/(p)eople$/i' => '\1\2erson',
             '/(m)en$/i' => '\1an',
             '/(c)hildren$/i' => '\1\2hild',
+            '/(f)eet$/i' => '\1oot',
             '/(n)ews$/i' => '\1\2ews',
             '/eaus$/' => 'eau',
             '/^(.*us)$/' => '\\1',
@@ -159,10 +185,15 @@ class Inflector
             '.*ss',
         ),
         'irregular' => array(
-            'criterion' => 'criteria',
-            'curves' => 'curve',
-            'foes' => 'foe',
-            'waves' => 'wave',
+            'criteria'  => 'criterion',
+            'curves'    => 'curve',
+            'emphases'  => 'emphasis',
+            'foes'      => 'foe',
+            'hoaxes'    => 'hoax',
+            'media'     => 'medium',
+            'neuroses'  => 'neurosis',
+            'waves'     => 'wave',
+            'oases'     => 'oasis',
         )
     );
 
@@ -237,6 +268,42 @@ public static function camelize($word)
     }
 
     /**
+     * Uppercases words with configurable delimeters between words.
+     *
+     * Takes a string and capitalizes all of the words, like PHP's built-in
+     * ucwords function.  This extends that behavior, however, by allowing the
+     * word delimeters to be configured, rather than only separating on
+     * whitespace.
+     *
+     * Here is an example:
+     * <code>
+     * <?php
+     * $string = 'top-o-the-morning to all_of_you!';
+     * echo \Doctrine\Common\Inflector\Inflector::ucwords($string);
+     * // Top-O-The-Morning To All_of_you!
+     *
+     * echo \Doctrine\Common\Inflector\Inflector::ucwords($string, '-_ ');
+     * // Top-O-The-Morning To All_Of_You!
+     * ?>
+     * </code>
+     *
+     * @param string $string The string to operate on.
+     * @param string $delimiters A list of word separators.
+     *
+     * @return string The string with all delimeter-separated words capitalized.
+     */
+    public static function ucwords($string, $delimiters = " \n\t\r\0\x0B-")
+    {
+        return preg_replace_callback(
+            '/[^' . preg_quote($delimiters, '/') . ']+/',
+            function($matches) {
+                return ucfirst($matches[0]);
+            },
+            $string
+        );
+    }
+
+    /**
      * Clears Inflectors inflected value caches, and resets the inflection
      * rules to the initial values.
      *
diff --git a/vendor/egulias/email-validator/README.md b/vendor/egulias/email-validator/README.md
index 262693b..0d0c5cc 100644
--- a/vendor/egulias/email-validator/README.md
+++ b/vendor/egulias/email-validator/README.md
@@ -9,7 +9,7 @@ With the help of
 Run the command below to install via Composer
 
 ```shell
-composer require egulias/email-validator
+composer require egulias/email-validator "~1.2"
 ```
 
 ##Usage##
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
index d8522ff..882c968 100644
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
+++ b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php
@@ -67,8 +67,6 @@ class EmailLexer extends AbstractLexer
         "\n"   => self::S_LF,
         "\r\n" => self::CRLF,
         'IPv6' => self::S_IPV6TAG,
-        '<'    => self::S_LOWERTHAN,
-        '>'    => self::S_GREATERTHAN,
         '{'    => self::S_OPENQBRACKET,
         '}'    => self::S_CLOSEQBRACKET,
         ''     => self::S_EMPTY,
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php
index d047dec..7e2b65f 100644
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php
+++ b/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php
@@ -33,6 +33,7 @@ class EmailValidator
     const ERR_FWS_CRLF_END       = 149;
     const ERR_CR_NO_LF           = 150;
     const ERR_DEPREC_REACHED     = 151;
+    const ERR_UNOPENEDCOMMENT    = 152;
     const RFC5321_TLD             = 9;
     const RFC5321_TLDNUMERIC      = 10;
     const RFC5321_QUOTEDSTRING    = 11;
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php
index c4d0cf6..ba3a613 100644
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php
+++ b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php
@@ -4,7 +4,6 @@
 namespace Egulias\EmailValidator\Parser;
 
 use Egulias\EmailValidator\EmailLexer;
-use Egulias\EmailValidator\Parser\Parser;
 use Egulias\EmailValidator\EmailValidator;
 
 class DomainPart extends Parser
@@ -103,8 +102,9 @@ public function checkIPV6Tag($addressLiteral, $maxGroups = 8)
     protected function doParseDomainPart()
     {
         $domain = '';
+        $openedParenthesis = 0;
+        $openBrackets = false;
         do {
-
             $prev = $this->lexer->getPrevious();
 
             if ($this->lexer->token['type'] === EmailLexer::S_SLASH) {
@@ -113,13 +113,25 @@ protected function doParseDomainPart()
 
             if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
                 $this->parseComments();
+                $openedParenthesis += $this->getOpenedParenthesis();
                 $this->lexer->moveNext();
+                $tmpPrev = $this->lexer->getPrevious();
+                if ($tmpPrev['type'] === EmailLexer::S_CLOSEPARENTHESIS) {
+                    $openedParenthesis--;
+                }
+            }
+            if ($this->lexer->token['type'] === EmailLexer::S_CLOSEPARENTHESIS) {
+                if ($openedParenthesis === 0) {
+                    throw new \InvalidArgumentException('ERR_UNOPENEDCOMMENT');
+                } else {
+                    $openedParenthesis--;
+                }
             }
 
             $this->checkConsecutiveDots();
             $this->checkDomainPartExceptions($prev);
 
-            if ($this->hasBrackets()) {
+            if ($openBrackets = $this->hasBrackets($openBrackets)) {
                 $this->parseDomainLiteral();
             }
 
@@ -180,7 +192,7 @@ protected function doParseDomainLiteral()
             }
 
             if ($this->lexer->isNextToken(EmailLexer::S_CR)) {
-                throw new \InvalidArgumentException("ERR_CR_NO_LF");
+                throw new \InvalidArgumentException('ERR_CR_NO_LF');
             }
             if ($this->lexer->token['type'] === EmailLexer::S_BACKSLASH) {
                 $this->warnings[] = EmailValidator::RFC5322_DOMLIT_OBSDTEXT;
@@ -276,8 +288,12 @@ protected function checkDomainPartExceptions($prev)
         }
     }
 
-    protected function hasBrackets()
+    protected function hasBrackets($openBrackets)
     {
+        if ($this->lexer->token['type'] === EmailLexer::S_CLOSEBRACKET && !$openBrackets) {
+            throw new \InvalidArgumentException('ERR_EXPECTING_OPENBRACKET');
+        }
+
         if ($this->lexer->token['type'] !== EmailLexer::S_OPENBRACKET) {
             return false;
         }
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php
index 2f77164..449748f 100644
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php
+++ b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php
@@ -4,7 +4,6 @@
 
 use Egulias\EmailValidator\EmailLexer;
 use Egulias\EmailValidator\EmailValidator;
-use \InvalidArgumentException;
 
 class LocalPart extends Parser
 {
@@ -12,9 +11,9 @@ public function parse($localPart)
     {
         $parseDQuote = true;
         $closingQuote = false;
+        $openedParenthesis = 0;
 
         while ($this->lexer->token['type'] !== EmailLexer::S_AT && $this->lexer->token) {
-
             if ($this->lexer->token['type'] === EmailLexer::S_DOT && !$this->lexer->getPrevious()) {
                 throw new \InvalidArgumentException('ERR_DOT_START');
             }
@@ -26,12 +25,19 @@ public function parse($localPart)
 
             if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) {
                 $this->parseComments();
+                $openedParenthesis += $this->getOpenedParenthesis();
+            }
+            if ($this->lexer->token['type'] === EmailLexer::S_CLOSEPARENTHESIS) {
+                if ($openedParenthesis === 0) {
+                    throw new \InvalidArgumentException('ERR_UNOPENEDCOMMENT');
+                } else {
+                    $openedParenthesis--;
+                }
             }
 
             $this->checkConsecutiveDots();
 
-            if (
-                $this->lexer->token['type'] === EmailLexer::S_DOT &&
+            if ($this->lexer->token['type'] === EmailLexer::S_DOT &&
                 $this->lexer->isNextToken(EmailLexer::S_AT)
             ) {
                 throw new \InvalidArgumentException('ERR_DOT_END');
@@ -82,7 +88,7 @@ protected function parseDoubleQuote()
             $this->lexer->moveNext();
 
             if (!$this->escaped() && isset($invalid[$this->lexer->token['type']])) {
-                throw new InvalidArgumentException("ERR_EXPECTED_ATEXT");
+                throw new \InvalidArgumentException('ERR_EXPECTED_ATEXT');
             }
         }
 
@@ -90,12 +96,12 @@ protected function parseDoubleQuote()
 
         if ($prev['type'] === EmailLexer::S_BACKSLASH) {
             if (!$this->checkDQUOTE(false)) {
-                throw new \InvalidArgumentException("ERR_UNCLOSED_DQUOTE");
+                throw new \InvalidArgumentException('ERR_UNCLOSED_DQUOTE');
             }
         }
 
         if (!$this->lexer->isNextToken(EmailLexer::S_AT) && $prev['type'] !== EmailLexer::S_BACKSLASH) {
-            throw new \InvalidArgumentException("ERR_EXPECED_AT");
+            throw new \InvalidArgumentException('ERR_EXPECED_AT');
         }
 
         return $parseAgain;
diff --git a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php
index b66279e..8a72cd1 100644
--- a/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php
+++ b/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php
@@ -9,6 +9,7 @@
 {
     protected $warnings = array();
     protected $lexer;
+    protected $openedParenthesis = 0;
 
     public function __construct(EmailLexer $lexer)
     {
@@ -20,7 +21,13 @@ public function getWarnings()
         return $this->warnings;
     }
 
-    abstract function parse($str);
+    abstract public function parse($str);
+
+    /** @return int */
+    public function getOpenedParenthesis()
+    {
+        return $this->openedParenthesis;
+    }
 
     /**
      * validateQuotedPair
@@ -35,15 +42,15 @@ protected function validateQuotedPair()
         $this->warnings[] = EmailValidator::DEPREC_QP;
     }
 
-    /**
-     * @return string the the comment
-     * @throws \InvalidArgumentException
-     */
     protected function parseComments()
     {
+        $this->openedParenthesis = 1;
         $this->isUnclosedComment();
         $this->warnings[] = EmailValidator::CFWS_COMMENT;
         while (!$this->lexer->isNextToken(EmailLexer::S_CLOSEPARENTHESIS)) {
+            if ($this->lexer->isNextToken(EmailLexer::S_OPENPARENTHESIS)) {
+                $this->openedParenthesis++;
+            }
             $this->warnEscaping();
             $this->lexer->moveNext();
         }
@@ -75,11 +82,11 @@ protected function parseFWS()
         $this->checkCRLFInFWS();
 
         if ($this->lexer->token['type'] === EmailLexer::S_CR) {
-            throw new \InvalidArgumentException("ERR_CR_NO_LF");
+            throw new \InvalidArgumentException('ERR_CR_NO_LF');
         }
 
         if ($this->lexer->isNextToken(EmailLexer::GENERIC) && $previous['type']  !== EmailLexer::S_AT) {
-            throw new \InvalidArgumentException("ERR_ATEXT_AFTER_CFWS");
+            throw new \InvalidArgumentException('ERR_ATEXT_AFTER_CFWS');
         }
 
         if ($this->lexer->token['type'] === EmailLexer::S_LF || $this->lexer->token['type'] === EmailLexer::C_NUL) {
@@ -160,7 +167,7 @@ protected function checkDQUOTE($hasClosingQuote)
             return $hasClosingQuote;
         }
         $previous = $this->lexer->getPrevious();
-        if ($this->lexer->isNextToken(EmailLexer::GENERIC) && $previous['type'] === EmailLexer::GENERIC) {
+        if ($previous['type'] === EmailLexer::GENERIC && $this->lexer->isNextToken(EmailLexer::GENERIC)) {
             throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT');
         }
 
@@ -181,10 +188,10 @@ protected function checkCRLFInFWS()
             return;
         }
         if ($this->lexer->isNextToken(EmailLexer::CRLF)) {
-            throw new \InvalidArgumentException("ERR_FWS_CRLF_X2");
+            throw new \InvalidArgumentException('ERR_FWS_CRLF_X2');
         }
         if (!$this->lexer->isNextTokenAny(array(EmailLexer::S_SP, EmailLexer::S_HTAB))) {
-            throw new \InvalidArgumentException("ERR_FWS_CRLF_END");
+            throw new \InvalidArgumentException('ERR_FWS_CRLF_END');
         }
     }
 }
diff --git a/vendor/fabpot/goutte/composer.json b/vendor/fabpot/goutte/composer.json
index 1a0ed82..a5d3d66 100644
--- a/vendor/fabpot/goutte/composer.json
+++ b/vendor/fabpot/goutte/composer.json
@@ -13,9 +13,9 @@
     ],
     "require": {
         "php": ">=5.5.0",
-        "symfony/browser-kit": "~2.1",
-        "symfony/css-selector": "~2.1",
-        "symfony/dom-crawler": "~2.1",
+        "symfony/browser-kit": "~2.1|~3.0",
+        "symfony/css-selector": "~2.1|~3.0",
+        "symfony/dom-crawler": "~2.1|~3.0",
         "guzzlehttp/guzzle": "^6.0"
     },
     "autoload": {
diff --git a/vendor/guzzlehttp/guzzle/.travis.yml b/vendor/guzzlehttp/guzzle/.travis.yml
index c0689d1..d2060f4 100644
--- a/vendor/guzzlehttp/guzzle/.travis.yml
+++ b/vendor/guzzlehttp/guzzle/.travis.yml
@@ -1,5 +1,7 @@
 language: php
 
+sudo: false
+
 php:
   - 5.5
   - 5.6
diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md
index de7da2d..5b7669b 100644
--- a/vendor/guzzlehttp/guzzle/CHANGELOG.md
+++ b/vendor/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,5 +1,20 @@
 # CHANGELOG
 
+## 6.1.1 - 2015-11-22
+
+* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler
+  https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4
+* Feature: HandlerStack is now more generic.
+  https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e
+* Bug fix: setting verify to false in the StreamHandler now disables peer
+  verification. https://github.com/guzzle/guzzle/issues/1256
+* Feature: Middleware now uses an exception factory, including more error
+  context. https://github.com/guzzle/guzzle/pull/1282
+* Feature: better support for disabled functions.
+  https://github.com/guzzle/guzzle/pull/1287
+* Bug fix: fixed regression where MockHandler was not using `sink`.
+  https://github.com/guzzle/guzzle/pull/1292
+
 ## 6.1.0 - 2015-09-08
 
 * Feature: Added the `on_stats` request option to provide access to transfer
diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md
index 2d721c0..3af1cc3 100644
--- a/vendor/guzzlehttp/guzzle/README.md
+++ b/vendor/guzzlehttp/guzzle/README.md
@@ -23,7 +23,7 @@ $res = $client->request('GET', 'https://api.github.com/user', [
     'auth' => ['user', 'pass']
 ]);
 echo $res->getStatusCode();
-// "200"
+// 200
 echo $res->getHeader('content-type');
 // 'application/json; charset=utf8'
 echo $res->getBody();
diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
index b5b2306..19068e1 100644
--- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php
+++ b/vendor/guzzlehttp/guzzle/src/ClientInterface.php
@@ -12,7 +12,7 @@
  */
 interface ClientInterface
 {
-    const VERSION = '6.1.0';
+    const VERSION = '6.1.1';
 
     /**
      * Send an HTTP request.
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
index ea60068..11421fe 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
@@ -82,7 +82,7 @@ public static function getCookieValue($value)
      * that survives between requests.
      *
      * @param SetCookie $cookie Being evaluated.
-     * @param bool $allowSessionCookies If we should presist session cookies
+     * @param bool $allowSessionCookies If we should persist session cookies
      * @return bool
      */
     public static function shouldPersist(
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
index c55bb34..e4e6248 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
@@ -9,7 +9,7 @@ class FileCookieJar extends CookieJar
     /** @var string filename */
     private $filename;
 
-    /** @var bool Control whether to presist session cookies or not. */
+    /** @var bool Control whether to persist session cookies or not. */
     private $storeSessionCookies;
     
     /**
diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
index d80c480..9cd5f9e 100644
--- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
+++ b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
@@ -9,7 +9,7 @@ class SessionCookieJar extends CookieJar
     /** @var string session key */
     private $sessionKey;
     
-    /** @var bool Control whether to presist session cookies or not. */
+    /** @var bool Control whether to persist session cookies or not. */
     private $storeSessionCookies;
 
     /**
diff --git a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
index 23dd02c..56b1831 100644
--- a/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
+++ b/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
@@ -79,25 +79,69 @@ public static function create(
 
         $level = floor($response->getStatusCode() / 100);
         if ($level == '4') {
-            $label = 'Client error response';
+            $label = 'Client error';
             $className = __NAMESPACE__ . '\\ClientException';
         } elseif ($level == '5') {
-            $label = 'Server error response';
+            $label = 'Server error';
             $className = __NAMESPACE__ . '\\ServerException';
         } else {
-            $label = 'Unsuccessful response';
+            $label = 'Unsuccessful request';
             $className = __CLASS__;
         }
 
-        $message = $label . ' [url] ' . $request->getUri()
-            . ' [http method] ' . $request->getMethod()
-            . ' [status code] ' . $response->getStatusCode()
-            . ' [reason phrase] ' . $response->getReasonPhrase();
+        // Server Error: `GET /` resulted in a `404 Not Found` response:
+        // <html> ... (truncated)
+        $message = sprintf(
+            '%s: `%s` resulted in a `%s` response',
+            $label,
+            $request->getMethod() . ' ' . $request->getUri(),
+            $response->getStatusCode() . ' ' . $response->getReasonPhrase()
+        );
+
+        $summary = static::getResponseBodySummary($response);
+
+        if ($summary !== null) {
+            $message .= ":\n{$summary}\n";
+        }
 
         return new $className($message, $request, $response, $previous, $ctx);
     }
 
     /**
+     * Get a short summary of the response
+     *
+     * Will return `null` if the response is not printable.
+     *
+     * @param ResponseInterface $response
+     *
+     * @return string|null
+     */
+    public static function getResponseBodySummary(ResponseInterface $response)
+    {
+        $body = $response->getBody();
+
+        if (!$body->isSeekable()) {
+            return null;
+        }
+
+        $size = $body->getSize();
+        $summary = $body->read(120);
+        $body->rewind();
+
+        if ($size > 120) {
+            $summary .= ' (truncated...)';
+        }
+
+        // Matches any printable character, including unicode characters:
+        // letters, marks, numbers, punctuation, spacing, and separators.
+        if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
+            return null;
+        }
+
+        return $summary;
+    }
+
+    /**
      * Get the request that caused the exception
      *
      * @return RequestInterface
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
index 4b1b0af..cd7898f 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
@@ -87,6 +87,19 @@ function ($value) use ($request, $options) {
                 if ($this->onFulfilled) {
                     call_user_func($this->onFulfilled, $value);
                 }
+                if (isset($options['sink'])) {
+                    $contents = (string) $value->getBody();
+                    $sink = $options['sink'];
+
+                    if (is_resource($sink)) {
+                        fwrite($sink, $contents);
+                    } elseif (is_string($sink)) {
+                        file_put_contents($sink, $contents);
+                    } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
+                        $sink->write($contents);
+                    }
+                }
+
                 return $value;
             },
             function ($reason) use ($request, $options) {
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
index 9bd76d2..f8b00be 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
@@ -1,6 +1,7 @@
 <?php
 namespace GuzzleHttp\Handler;
 
+use GuzzleHttp\RequestOptions;
 use Psr\Http\Message\RequestInterface;
 
 /**
@@ -22,7 +23,7 @@ public static function wrapSync(
         callable $sync
     ) {
         return function (RequestInterface $request, array $options) use ($default, $sync) {
-            return empty($options['sync'])
+            return empty($options[RequestOptions::SYNCHRONOUS])
                 ? $default($request, $options)
                 : $sync($request, $options);
         };
diff --git a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
index 2f18a48..c835dc7 100644
--- a/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
+++ b/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
@@ -359,12 +359,14 @@ private function add_verify(RequestInterface $request, &$options, $value, &$para
             }
         } elseif ($value === false) {
             $options['ssl']['verify_peer'] = false;
+            $options['ssl']['verify_peer_name'] = false;
             return;
         } else {
             throw new \InvalidArgumentException('Invalid verify request option');
         }
 
         $options['ssl']['verify_peer'] = true;
+        $options['ssl']['verify_peer_name'] = true;
         $options['ssl']['allow_self_signed'] = false;
     }
 
diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
index f851849..a72e38a 100644
--- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php
+++ b/vendor/guzzlehttp/guzzle/src/HandlerStack.php
@@ -62,11 +62,8 @@ public function __construct(callable $handler = null)
      */
     public function __invoke(RequestInterface $request, array $options)
     {
-        if (!$this->cached) {
-            $this->cached = $this->resolve();
-        }
+        $handler = $this->resolve();
 
-        $handler = $this->cached;
         return $handler($request, $options);
     }
 
@@ -193,15 +190,19 @@ function ($tuple) use ($idx, $remove) {
      */
     public function resolve()
     {
-        if (!($prev = $this->handler)) {
-            throw new \LogicException('No handler has been specified');
-        }
+        if (!$this->cached) {
+            if (!($prev = $this->handler)) {
+                throw new \LogicException('No handler has been specified');
+            }
+
+            foreach (array_reverse($this->stack) as $fn) {
+                $prev = $fn[0]($prev);
+            }
 
-        foreach (array_reverse($this->stack) as $fn) {
-            $prev = $fn[0]($prev);
+            $this->cached = $prev;
         }
 
-        return $prev;
+        return $this->cached;
     }
 
     /**
diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php
index 2f165f3..85d3165 100644
--- a/vendor/guzzlehttp/guzzle/src/Middleware.php
+++ b/vendor/guzzlehttp/guzzle/src/Middleware.php
@@ -2,9 +2,7 @@
 namespace GuzzleHttp;
 
 use GuzzleHttp\Cookie\CookieJarInterface;
-use GuzzleHttp\Exception\ClientException;
 use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Exception\ServerException;
 use GuzzleHttp\Promise\RejectedPromise;
 use GuzzleHttp\Psr7;
 use Psr\Http\Message\ResponseInterface;
@@ -64,9 +62,7 @@ function (ResponseInterface $response) use ($request, $handler) {
                         if ($code < 400) {
                             return $response;
                         }
-                        throw $code > 499
-                            ? new ServerException("Server error: $code", $request, $response)
-                            : new ClientException("Client error: $code", $request, $response);
+                        throw RequestException::create($request, $response);
                     }
                 );
             };
diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php
index bc41d6e..8f1be33 100644
--- a/vendor/guzzlehttp/guzzle/src/Pool.php
+++ b/vendor/guzzlehttp/guzzle/src/Pool.php
@@ -52,11 +52,11 @@ public function __construct(
 
         $iterable = \GuzzleHttp\Promise\iter_for($requests);
         $requests = function () use ($iterable, $client, $opts) {
-            foreach ($iterable as $rfn) {
+            foreach ($iterable as $key => $rfn) {
                 if ($rfn instanceof RequestInterface) {
-                    yield $client->sendAsync($rfn, $opts);
+                    yield $key => $client->sendAsync($rfn, $opts);
                 } elseif (is_callable($rfn)) {
-                    yield $rfn($opts);
+                    yield $key => $rfn($opts);
                 } else {
                     throw new \InvalidArgumentException('Each value yielded by '
                         . 'the iterator must be a Psr7\Http\Message\RequestInterface '
diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php
index d0a2ca8..5e93b22 100644
--- a/vendor/guzzlehttp/guzzle/src/functions.php
+++ b/vendor/guzzlehttp/guzzle/src/functions.php
@@ -104,8 +104,12 @@ function debug_resource($value = null)
 function choose_handler()
 {
     $handler = null;
-    if (extension_loaded('curl')) {
+    if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
         $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
+    } elseif (function_exists('curl_exec')) {
+        $handler = new CurlHandler();
+    } elseif (function_exists('curl_multi_exec')) {
+        $handler = new CurlMultiHandler();
     }
 
     if (ini_get('allow_url_fopen')) {
diff --git a/vendor/guzzlehttp/promises/CHANGELOG.md b/vendor/guzzlehttp/promises/CHANGELOG.md
index daad986..4031cb8 100644
--- a/vendor/guzzlehttp/promises/CHANGELOG.md
+++ b/vendor/guzzlehttp/promises/CHANGELOG.md
@@ -1,5 +1,11 @@
 # CHANGELOG
 
+## 1.0.3 - 2015-10-15
+
+* Update EachPromise to immediately resolve when the underlying promise iterator
+  is empty. Previously, such a promise would throw an exception when its `wait`
+  function was called.
+
 ## 1.0.2 - 2015-05-15
 
 * Conditionally require functions.php.
diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php
index 855d833..5918429 100644
--- a/vendor/guzzlehttp/promises/src/EachPromise.php
+++ b/vendor/guzzlehttp/promises/src/EachPromise.php
@@ -83,6 +83,11 @@ private function createPromise()
     {
         $this->aggregate = new Promise(function () {
             reset($this->pending);
+            if (empty($this->pending) && !$this->iterable->valid()) {
+                $this->aggregate->resolve(null);
+                return;
+            }
+
             // Consume a potentially fluctuating list of promises while
             // ensuring that indexes are maintained (precluding array_shift).
             while ($promise = current($this->pending)) {
diff --git a/vendor/guzzlehttp/psr7/CHANGELOG.md b/vendor/guzzlehttp/psr7/CHANGELOG.md
index 642dc9a..6cdfb39 100644
--- a/vendor/guzzlehttp/psr7/CHANGELOG.md
+++ b/vendor/guzzlehttp/psr7/CHANGELOG.md
@@ -1,5 +1,9 @@
 # CHANGELOG
 
+## 1.2.1 - 2015-11-02
+
+* Now supporting negative offsets when seeking to SEEK_END.
+
 ## 1.2.0 - 2015-08-15
 
 * Body as `"0"` is now properly added to a response.
diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php
index 796d581..420d5b0 100644
--- a/vendor/guzzlehttp/psr7/src/CachingStream.php
+++ b/vendor/guzzlehttp/psr7/src/CachingStream.php
@@ -52,8 +52,7 @@ public function seek($offset, $whence = SEEK_SET)
             if ($size === null) {
                 $size = $this->cacheEntireStream();
             }
-            // Because 0 is the first byte, we seek to size - 1.
-            $byte = $size - 1 - $offset;
+            $byte = $size + $offset;
         } else {
             throw new \InvalidArgumentException('Invalid whence');
         }
diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php
index 0189b14..ed1d3f5 100644
--- a/vendor/guzzlehttp/psr7/src/Request.php
+++ b/vendor/guzzlehttp/psr7/src/Request.php
@@ -26,8 +26,8 @@ class Request implements RequestInterface
 
     /**
      * @param null|string $method HTTP method for the request.
-     * @param null|string $uri URI for the request.
-     * @param array  $headers Headers for the message.
+     * @param null|string|UriInterface $uri URI for the request.
+     * @param array $headers Headers for the message.
      * @param string|resource|StreamInterface $body Message body.
      * @param string $protocolVersion HTTP protocol version.
      *
diff --git a/vendor/ircmaxell/password-compat/LICENSE.md b/vendor/ircmaxell/password-compat/LICENSE.md
new file mode 100644
index 0000000..1efc565
--- /dev/null
+++ b/vendor/ircmaxell/password-compat/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright (c) 2012 Anthony Ferrara
+
+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.
\ No newline at end of file
diff --git a/vendor/ircmaxell/password-compat/composer.json b/vendor/ircmaxell/password-compat/composer.json
new file mode 100644
index 0000000..822fd1f
--- /dev/null
+++ b/vendor/ircmaxell/password-compat/composer.json
@@ -0,0 +1,20 @@
+{
+    "name": "ircmaxell/password-compat",
+    "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
+    "keywords": ["password", "hashing"],
+    "homepage": "https://github.com/ircmaxell/password_compat",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Anthony Ferrara",
+            "email": "ircmaxell@php.net",
+            "homepage": "http://blog.ircmaxell.com"
+        }
+    ],
+    "require-dev": {
+        "phpunit/phpunit": "4.*"
+    },
+    "autoload": {
+        "files": ["lib/password.php"]
+    }
+}
diff --git a/vendor/ircmaxell/password-compat/lib/password.php b/vendor/ircmaxell/password-compat/lib/password.php
new file mode 100644
index 0000000..cc6896c
--- /dev/null
+++ b/vendor/ircmaxell/password-compat/lib/password.php
@@ -0,0 +1,314 @@
+<?php
+/**
+ * A Compatibility library with PHP 5.5's simplified password hashing API.
+ *
+ * @author Anthony Ferrara <ircmaxell@php.net>
+ * @license http://www.opensource.org/licenses/mit-license.html MIT License
+ * @copyright 2012 The Authors
+ */
+
+namespace {
+
+    if (!defined('PASSWORD_BCRYPT')) {
+        /**
+         * PHPUnit Process isolation caches constants, but not function declarations.
+         * So we need to check if the constants are defined separately from 
+         * the functions to enable supporting process isolation in userland
+         * code.
+         */
+        define('PASSWORD_BCRYPT', 1);
+        define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
+        define('PASSWORD_BCRYPT_DEFAULT_COST', 10);
+    }
+
+    if (!function_exists('password_hash')) {
+
+        /**
+         * Hash the password using the specified algorithm
+         *
+         * @param string $password The password to hash
+         * @param int    $algo     The algorithm to use (Defined by PASSWORD_* constants)
+         * @param array  $options  The options for the algorithm to use
+         *
+         * @return string|false The hashed password, or false on error.
+         */
+        function password_hash($password, $algo, array $options = array()) {
+            if (!function_exists('crypt')) {
+                trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
+                return null;
+            }
+            if (is_null($password) || is_int($password)) {
+                $password = (string) $password;
+            }
+            if (!is_string($password)) {
+                trigger_error("password_hash(): Password must be a string", E_USER_WARNING);
+                return null;
+            }
+            if (!is_int($algo)) {
+                trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
+                return null;
+            }
+            $resultLength = 0;
+            switch ($algo) {
+                case PASSWORD_BCRYPT:
+                    $cost = PASSWORD_BCRYPT_DEFAULT_COST;
+                    if (isset($options['cost'])) {
+                        $cost = $options['cost'];
+                        if ($cost < 4 || $cost > 31) {
+                            trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
+                            return null;
+                        }
+                    }
+                    // The length of salt to generate
+                    $raw_salt_len = 16;
+                    // The length required in the final serialization
+                    $required_salt_len = 22;
+                    $hash_format = sprintf("$2y$%02d$", $cost);
+                    // The expected length of the final crypt() output
+                    $resultLength = 60;
+                    break;
+                default:
+                    trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
+                    return null;
+            }
+            $salt_requires_encoding = false;
+            if (isset($options['salt'])) {
+                switch (gettype($options['salt'])) {
+                    case 'NULL':
+                    case 'boolean':
+                    case 'integer':
+                    case 'double':
+                    case 'string':
+                        $salt = (string) $options['salt'];
+                        break;
+                    case 'object':
+                        if (method_exists($options['salt'], '__tostring')) {
+                            $salt = (string) $options['salt'];
+                            break;
+                        }
+                    case 'array':
+                    case 'resource':
+                    default:
+                        trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING);
+                        return null;
+                }
+                if (PasswordCompat\binary\_strlen($salt) < $required_salt_len) {
+                    trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", PasswordCompat\binary\_strlen($salt), $required_salt_len), E_USER_WARNING);
+                    return null;
+                } elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
+                    $salt_requires_encoding = true;
+                }
+            } else {
+                $buffer = '';
+                $buffer_valid = false;
+                if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) {
+                    $buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM);
+                    if ($buffer) {
+                        $buffer_valid = true;
+                    }
+                }
+                if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) {
+                    $buffer = openssl_random_pseudo_bytes($raw_salt_len);
+                    if ($buffer) {
+                        $buffer_valid = true;
+                    }
+                }
+                if (!$buffer_valid && @is_readable('/dev/urandom')) {
+                    $f = fopen('/dev/urandom', 'r');
+                    $read = PasswordCompat\binary\_strlen($buffer);
+                    while ($read < $raw_salt_len) {
+                        $buffer .= fread($f, $raw_salt_len - $read);
+                        $read = PasswordCompat\binary\_strlen($buffer);
+                    }
+                    fclose($f);
+                    if ($read >= $raw_salt_len) {
+                        $buffer_valid = true;
+                    }
+                }
+                if (!$buffer_valid || PasswordCompat\binary\_strlen($buffer) < $raw_salt_len) {
+                    $bl = PasswordCompat\binary\_strlen($buffer);
+                    for ($i = 0; $i < $raw_salt_len; $i++) {
+                        if ($i < $bl) {
+                            $buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255));
+                        } else {
+                            $buffer .= chr(mt_rand(0, 255));
+                        }
+                    }
+                }
+                $salt = $buffer;
+                $salt_requires_encoding = true;
+            }
+            if ($salt_requires_encoding) {
+                // encode string with the Base64 variant used by crypt
+                $base64_digits =
+                    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+                $bcrypt64_digits =
+                    './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
+
+                $base64_string = base64_encode($salt);
+                $salt = strtr(rtrim($base64_string, '='), $base64_digits, $bcrypt64_digits);
+            }
+            $salt = PasswordCompat\binary\_substr($salt, 0, $required_salt_len);
+
+            $hash = $hash_format . $salt;
+
+            $ret = crypt($password, $hash);
+
+            if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
+                return false;
+            }
+
+            return $ret;
+        }
+
+        /**
+         * Get information about the password hash. Returns an array of the information
+         * that was used to generate the password hash.
+         *
+         * array(
+         *    'algo' => 1,
+         *    'algoName' => 'bcrypt',
+         *    'options' => array(
+         *        'cost' => PASSWORD_BCRYPT_DEFAULT_COST,
+         *    ),
+         * )
+         *
+         * @param string $hash The password hash to extract info from
+         *
+         * @return array The array of information about the hash.
+         */
+        function password_get_info($hash) {
+            $return = array(
+                'algo' => 0,
+                'algoName' => 'unknown',
+                'options' => array(),
+            );
+            if (PasswordCompat\binary\_substr($hash, 0, 4) == '$2y$' && PasswordCompat\binary\_strlen($hash) == 60) {
+                $return['algo'] = PASSWORD_BCRYPT;
+                $return['algoName'] = 'bcrypt';
+                list($cost) = sscanf($hash, "$2y$%d$");
+                $return['options']['cost'] = $cost;
+            }
+            return $return;
+        }
+
+        /**
+         * Determine if the password hash needs to be rehashed according to the options provided
+         *
+         * If the answer is true, after validating the password using password_verify, rehash it.
+         *
+         * @param string $hash    The hash to test
+         * @param int    $algo    The algorithm used for new password hashes
+         * @param array  $options The options array passed to password_hash
+         *
+         * @return boolean True if the password needs to be rehashed.
+         */
+        function password_needs_rehash($hash, $algo, array $options = array()) {
+            $info = password_get_info($hash);
+            if ($info['algo'] != $algo) {
+                return true;
+            }
+            switch ($algo) {
+                case PASSWORD_BCRYPT:
+                    $cost = isset($options['cost']) ? $options['cost'] : PASSWORD_BCRYPT_DEFAULT_COST;
+                    if ($cost != $info['options']['cost']) {
+                        return true;
+                    }
+                    break;
+            }
+            return false;
+        }
+
+        /**
+         * Verify a password against a hash using a timing attack resistant approach
+         *
+         * @param string $password The password to verify
+         * @param string $hash     The hash to verify against
+         *
+         * @return boolean If the password matches the hash
+         */
+        function password_verify($password, $hash) {
+            if (!function_exists('crypt')) {
+                trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
+                return false;
+            }
+            $ret = crypt($password, $hash);
+            if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != PasswordCompat\binary\_strlen($hash) || PasswordCompat\binary\_strlen($ret) <= 13) {
+                return false;
+            }
+
+            $status = 0;
+            for ($i = 0; $i < PasswordCompat\binary\_strlen($ret); $i++) {
+                $status |= (ord($ret[$i]) ^ ord($hash[$i]));
+            }
+
+            return $status === 0;
+        }
+    }
+
+}
+
+namespace PasswordCompat\binary {
+
+    if (!function_exists('PasswordCompat\\binary\\_strlen')) {
+
+        /**
+         * Count the number of bytes in a string
+         *
+         * We cannot simply use strlen() for this, because it might be overwritten by the mbstring extension.
+         * In this case, strlen() will count the number of *characters* based on the internal encoding. A
+         * sequence of bytes might be regarded as a single multibyte character.
+         *
+         * @param string $binary_string The input string
+         *
+         * @internal
+         * @return int The number of bytes
+         */
+        function _strlen($binary_string) {
+            if (function_exists('mb_strlen')) {
+                return mb_strlen($binary_string, '8bit');
+            }
+            return strlen($binary_string);
+        }
+
+        /**
+         * Get a substring based on byte limits
+         *
+         * @see _strlen()
+         *
+         * @param string $binary_string The input string
+         * @param int    $start
+         * @param int    $length
+         *
+         * @internal
+         * @return string The substring
+         */
+        function _substr($binary_string, $start, $length) {
+            if (function_exists('mb_substr')) {
+                return mb_substr($binary_string, $start, $length, '8bit');
+            }
+            return substr($binary_string, $start, $length);
+        }
+
+        /**
+         * Check if current PHP version is compatible with the library
+         *
+         * @return boolean the check result
+         */
+        function check() {
+            static $pass = NULL;
+
+            if (is_null($pass)) {
+                if (function_exists('crypt')) {
+                    $hash = '$2y$04$usesomesillystringfore7hnbRJHxXVLeakoG8K30oukPsA.ztMG';
+                    $test = crypt("password", $hash);
+                    $pass = $test == $hash;
+                } else {
+                    $pass = false;
+                }
+            }
+            return $pass;
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/vendor/ircmaxell/password-compat/version-test.php b/vendor/ircmaxell/password-compat/version-test.php
new file mode 100644
index 0000000..96f60ca
--- /dev/null
+++ b/vendor/ircmaxell/password-compat/version-test.php
@@ -0,0 +1,6 @@
+<?php
+
+require "lib/password.php";
+
+echo "Test for functionality of compat library: " . (PasswordCompat\binary\check() ? "Pass" : "Fail");
+echo "\n";
\ No newline at end of file
diff --git a/vendor/phpunit/phpunit/.php_cs b/vendor/phpunit/phpunit/.php_cs
index 5b353d2..e0d5fd6 100644
--- a/vendor/phpunit/phpunit/.php_cs
+++ b/vendor/phpunit/phpunit/.php_cs
@@ -11,33 +11,58 @@ return Symfony\CS\Config\Config::create()
     ->level(\Symfony\CS\FixerInterface::NONE_LEVEL)
     ->fixers(
         array(
+            'align_double_arrow',
+            'align_equals',
+            'braces',
+            'concat_with_spaces',
             'duplicate_semicolon',
+            'elseif',
             'empty_return',
+            'encoding',
+            'eof_ending',
             'extra_empty_lines',
+            'function_call_space',
+            'function_declaration',
+            'indentation',
             'join_function',
+            'line_after_namespace',
+            'linefeed',
             'list_commas',
+            'long_array_syntax',
+            'lowercase_constants',
+            'lowercase_keywords',
+            'method_argument_space',
+            'multiple_use',
+            'namespace_no_leading_whitespace',
             'no_blank_lines_after_class_opening',
             'no_empty_lines_after_phpdocs',
+            'parenthesis',
+            'php_closing_tag',
             'phpdoc_indent',
             'phpdoc_no_access',
             'phpdoc_no_empty_return',
             'phpdoc_no_package',
             'phpdoc_params',
             'phpdoc_scalar',
+            'phpdoc_separation',
             'phpdoc_to_comment',
             'phpdoc_trim',
+            'phpdoc_types',
+            'phpdoc_var_without_name',
+            'remove_lines_between_uses',
             'return',
             'self_accessor',
+            'short_tag',
+            'single_line_after_imports',
             'single_quote',
             'spaces_before_semicolon',
             'spaces_cast',
             'ternary_spaces',
+            'trailing_spaces',
             'trim_array_spaces',
             'unused_use',
-            'whitespacy_lines',
-            'align_double_arrow',
-            'align_equals',
-            'concat_with_spaces'
+            'visibility',
+            'whitespacy_lines'
         )
     )
     ->finder($finder);
diff --git a/vendor/phpunit/phpunit/ChangeLog-4.8.md b/vendor/phpunit/phpunit/ChangeLog-4.8.md
index 9fc5845..177b25b 100644
--- a/vendor/phpunit/phpunit/ChangeLog-4.8.md
+++ b/vendor/phpunit/phpunit/ChangeLog-4.8.md
@@ -2,6 +2,58 @@
 
 All notable changes of the PHPUnit 4.8 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
 
+## [4.8.18] - 2015-11-11
+
+### Changed
+
+* DbUnit 1.4 is bundled again in the PHAR distribution
+
+## [4.8.17] - 2015-11-10
+
+### Fixed
+
+* Fixed [#1935](https://github.com/sebastianbergmann/phpunit/issues/1935): `PHP_CodeCoverage_Exception` not handled properly
+* Fixed [#1948](https://github.com/sebastianbergmann/phpunit/issues/1948): Unable to use PHAR due to unsupported signature error
+
+### Changed
+
+* DbUnit >= 2.0.2 is now bundled in the PHAR distribution
+
+## [4.8.16] - 2015-10-23
+
+### Added
+
+* Implemented [#1925](https://github.com/sebastianbergmann/phpunit/issues/1925): Provide a library-only PHAR
+
+## [4.8.15] - 2015-10-22
+
+### Fixed
+
+* The backup of global state is now properly restored when changes to global state are disallowed
+* The `__PHPUNIT_PHAR__` constant is now properly set when the PHPUnit PHAR is used as a library
+
+## [4.8.14] - 2015-10-17
+
+### Fixed
+
+* Fixed [#1892](https://github.com/sebastianbergmann/phpunit/issues/1892): `--coverage-text` does not honor color settings
+
+## [4.8.13] - 2015-10-14
+
+### Added
+
+* Added the `--self-upgrade` commandline switch for upgrading a PHPUnit PHAR to the latest version
+
+### Changed
+
+* The `--self-update` commandline switch now updates a PHPUnit PHAR to the latest version within the same release series
+
+## [4.8.12] - 2015-10-12
+
+### Changed
+
+* Merged [#1893](https://github.com/sebastianbergmann/phpunit/issues/1893): Removed workaround for phpab bug
+
 ## [4.8.11] - 2015-10-07
 
 ### Fixed
@@ -85,6 +137,12 @@ New PHAR release due to updated dependencies
 * Made the argument check of `assertContains()` and `assertNotContains()` more strict to prevent undefined behavior such as [#1808](https://github.com/sebastianbergmann/phpunit/issues/1808)
 * Changed the name of the default group from `__nogroup__` to `default`
 
+[4.8.17]: https://github.com/sebastianbergmann/phpunit/compare/4.8.16...4.8.17
+[4.8.16]: https://github.com/sebastianbergmann/phpunit/compare/4.8.15...4.8.16
+[4.8.15]: https://github.com/sebastianbergmann/phpunit/compare/4.8.14...4.8.15
+[4.8.14]: https://github.com/sebastianbergmann/phpunit/compare/4.8.13...4.8.14
+[4.8.13]: https://github.com/sebastianbergmann/phpunit/compare/4.8.12...4.8.13
+[4.8.12]: https://github.com/sebastianbergmann/phpunit/compare/4.8.11...4.8.12
 [4.8.11]: https://github.com/sebastianbergmann/phpunit/compare/4.8.10...4.8.11
 [4.8.10]: https://github.com/sebastianbergmann/phpunit/compare/4.8.9...4.8.10
 [4.8.9]: https://github.com/sebastianbergmann/phpunit/compare/4.8.8...4.8.9
diff --git a/vendor/phpunit/phpunit/build.xml b/vendor/phpunit/phpunit/build.xml
index ef816e6..3020a13 100644
--- a/vendor/phpunit/phpunit/build.xml
+++ b/vendor/phpunit/phpunit/build.xml
@@ -45,6 +45,12 @@
         <exec executable="gpg" failonerror="true">
             <arg value="--armor" />
             <arg value="--detach-sign" />
+            <arg path="${basedir}/build/phpunit-library-${version}.phar" />
+        </exec>
+
+        <exec executable="gpg" failonerror="true">
+            <arg value="--armor" />
+            <arg value="--detach-sign" />
             <arg path="${basedir}/build/phpunit-${version}.phar" />
         </exec>
     </target>
@@ -248,14 +254,30 @@
             <arg value="${version}" />
         </exec>
 
-        <exec executable="phpab">
+        <exec executable="${basedir}/build/bin/phpab">
+            <arg value="--all" />
+            <arg value="--static" />
+            <arg value="--once" />
+            <arg value="--phar" />
+            <arg value="--hash" />
+            <arg value="SHA-1" />
+            <arg value="--output" />
+            <arg path="${basedir}/build/phpunit-library-${_version}.phar" />
+            <arg value="--template" />
+            <arg path="${basedir}/build/library-phar-autoload.php.in" />
+            <arg path="${basedir}/build/phar" />
+        </exec>
+
+        <exec executable="${basedir}/build/bin/phpab">
             <arg value="--all" />
             <arg value="--static" />
             <arg value="--phar" />
+            <arg value="--hash" />
+            <arg value="SHA-1" />
             <arg value="--output" />
             <arg path="${basedir}/build/phpunit-${_version}.phar" />
             <arg value="--template" />
-            <arg path="${basedir}/build/phar-autoload.php.in" />
+            <arg path="${basedir}/build/binary-phar-autoload.php.in" />
             <arg path="${basedir}/build/phar" />
         </exec>
 
diff --git a/vendor/phpunit/phpunit/build/bin/phpab b/vendor/phpunit/phpunit/build/bin/phpab
new file mode 100755
index 0000000..9a342f2
--- /dev/null
+++ b/vendor/phpunit/phpunit/build/bin/phpab
@@ -0,0 +1,891 @@
+#!/usr/bin/env php
+<?php
+spl_autoload_register(
+  function ($class)
+  {
+      static $classes = NULL;
+
+      if ($classes === NULL) {
+          $classes = array(
+            'ezcbase' => '/vendor/zetacomponents/base/src/base.php',
+                'ezcbaseconfigurationinitializer' => '/vendor/zetacomponents/base/src/interfaces/configuration_initializer.php',
+                'ezcbasedoubleclassrepositoryprefixexception' => '/vendor/zetacomponents/base/src/exceptions/double_class_repository_prefix.php',
+                'ezcbaseexception' => '/vendor/zetacomponents/base/src/exceptions/exception.php',
+                'ezcbaseexportable' => '/vendor/zetacomponents/base/src/interfaces/exportable.php',
+                'ezcbaseextensionnotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/extension_not_found.php',
+                'ezcbasefeatures' => '/vendor/zetacomponents/base/src/features.php',
+                'ezcbasefile' => '/vendor/zetacomponents/base/src/file.php',
+                'ezcbasefileexception' => '/vendor/zetacomponents/base/src/exceptions/file_exception.php',
+                'ezcbasefilefindcontext' => '/vendor/zetacomponents/base/src/structs/file_find_context.php',
+                'ezcbasefileioexception' => '/vendor/zetacomponents/base/src/exceptions/file_io.php',
+                'ezcbasefilenotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/file_not_found.php',
+                'ezcbasefilepermissionexception' => '/vendor/zetacomponents/base/src/exceptions/file_permission.php',
+                'ezcbasefunctionalitynotsupportedexception' => '/vendor/zetacomponents/base/src/exceptions/functionality_not_supported.php',
+                'ezcbaseinit' => '/vendor/zetacomponents/base/src/init.php',
+                'ezcbaseinitcallbackconfiguredexception' => '/vendor/zetacomponents/base/src/exceptions/init_callback_configured.php',
+                'ezcbaseinitinvalidcallbackclassexception' => '/vendor/zetacomponents/base/src/exceptions/invalid_callback_class.php',
+                'ezcbaseinvalidparentclassexception' => '/vendor/zetacomponents/base/src/exceptions/invalid_parent_class.php',
+                'ezcbasemetadata' => '/vendor/zetacomponents/base/src/metadata.php',
+                'ezcbasemetadatapearreader' => '/vendor/zetacomponents/base/src/metadata/pear.php',
+                'ezcbasemetadatatarballreader' => '/vendor/zetacomponents/base/src/metadata/tarball.php',
+                'ezcbaseoptions' => '/vendor/zetacomponents/base/src/options.php',
+                'ezcbasepersistable' => '/vendor/zetacomponents/base/src/interfaces/persistable.php',
+                'ezcbasepropertynotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/property_not_found.php',
+                'ezcbasepropertypermissionexception' => '/vendor/zetacomponents/base/src/exceptions/property_permission.php',
+                'ezcbaserepositorydirectory' => '/vendor/zetacomponents/base/src/structs/repository_directory.php',
+                'ezcbasesettingnotfoundexception' => '/vendor/zetacomponents/base/src/exceptions/setting_not_found.php',
+                'ezcbasesettingvalueexception' => '/vendor/zetacomponents/base/src/exceptions/setting_value.php',
+                'ezcbasestruct' => '/vendor/zetacomponents/base/src/struct.php',
+                'ezcbasevalueexception' => '/vendor/zetacomponents/base/src/exceptions/value.php',
+                'ezcbasewhateverexception' => '/vendor/zetacomponents/base/src/exceptions/whatever.php',
+                'ezcconsoleargument' => '/vendor/zetacomponents/console-tools/src/input/argument.php',
+                'ezcconsoleargumentalreadyregisteredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_already_registered.php',
+                'ezcconsoleargumentexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument.php',
+                'ezcconsoleargumentmandatoryviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_mandatory_violation.php',
+                'ezcconsolearguments' => '/vendor/zetacomponents/console-tools/src/input/arguments.php',
+                'ezcconsoleargumenttypeviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_type_violation.php',
+                'ezcconsoledialog' => '/vendor/zetacomponents/console-tools/src/interfaces/dialog.php',
+                'ezcconsoledialogabortexception' => '/vendor/zetacomponents/console-tools/src/exceptions/dialog_abort.php',
+                'ezcconsoledialogoptions' => '/vendor/zetacomponents/console-tools/src/options/dialog.php',
+                'ezcconsoledialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/dialog_validator.php',
+                'ezcconsoledialogviewer' => '/vendor/zetacomponents/console-tools/src/dialog_viewer.php',
+                'ezcconsoleexception' => '/vendor/zetacomponents/console-tools/src/exceptions/exception.php',
+                'ezcconsoleinput' => '/vendor/zetacomponents/console-tools/src/input.php',
+                'ezcconsoleinputhelpgenerator' => '/vendor/zetacomponents/console-tools/src/interfaces/input_help_generator.php',
+                'ezcconsoleinputstandardhelpgenerator' => '/vendor/zetacomponents/console-tools/src/input/help_generators/standard.php',
+                'ezcconsoleinputvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/input_validator.php',
+                'ezcconsoleinvalidoptionnameexception' => '/vendor/zetacomponents/console-tools/src/exceptions/invalid_option_name.php',
+                'ezcconsoleinvalidoutputtargetexception' => '/vendor/zetacomponents/console-tools/src/exceptions/invalid_output_target.php',
+                'ezcconsolemenudialog' => '/vendor/zetacomponents/console-tools/src/dialog/menu_dialog.php',
+                'ezcconsolemenudialogdefaultvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/menu_dialog_default.php',
+                'ezcconsolemenudialogoptions' => '/vendor/zetacomponents/console-tools/src/options/menu_dialog.php',
+                'ezcconsolemenudialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/menu_dialog_validator.php',
+                'ezcconsolenopositionstoredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/no_position_stored.php',
+                'ezcconsolenovaliddialogresultexception' => '/vendor/zetacomponents/console-tools/src/exceptions/no_valid_dialog_result.php',
+                'ezcconsoleoption' => '/vendor/zetacomponents/console-tools/src/input/option.php',
+                'ezcconsoleoptionalreadyregisteredexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_already_registered.php',
+                'ezcconsoleoptionargumentsviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_arguments_violation.php',
+                'ezcconsoleoptiondependencyviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_dependency_violation.php',
+                'ezcconsoleoptionexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option.php',
+                'ezcconsoleoptionexclusionviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_exclusion_violation.php',
+                'ezcconsoleoptionmandatoryviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_mandatory_violation.php',
+                'ezcconsoleoptionmissingvalueexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_missing_value.php',
+                'ezcconsoleoptionnoaliasexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_no_alias.php',
+                'ezcconsoleoptionnotexistsexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_not_exists.php',
+                'ezcconsoleoptionrule' => '/vendor/zetacomponents/console-tools/src/structs/option_rule.php',
+                'ezcconsoleoptionstringnotwellformedexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_string_not_wellformed.php',
+                'ezcconsoleoptiontoomanyvaluesexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_too_many_values.php',
+                'ezcconsoleoptiontypeviolationexception' => '/vendor/zetacomponents/console-tools/src/exceptions/option_type_violation.php',
+                'ezcconsoleoutput' => '/vendor/zetacomponents/console-tools/src/output.php',
+                'ezcconsoleoutputformat' => '/vendor/zetacomponents/console-tools/src/structs/output_format.php',
+                'ezcconsoleoutputformats' => '/vendor/zetacomponents/console-tools/src/structs/output_formats.php',
+                'ezcconsoleoutputoptions' => '/vendor/zetacomponents/console-tools/src/options/output.php',
+                'ezcconsoleprogressbar' => '/vendor/zetacomponents/console-tools/src/progressbar.php',
+                'ezcconsoleprogressbaroptions' => '/vendor/zetacomponents/console-tools/src/options/progressbar.php',
+                'ezcconsoleprogressmonitor' => '/vendor/zetacomponents/console-tools/src/progressmonitor.php',
+                'ezcconsoleprogressmonitoroptions' => '/vendor/zetacomponents/console-tools/src/options/progressmonitor.php',
+                'ezcconsolequestiondialog' => '/vendor/zetacomponents/console-tools/src/dialog/question_dialog.php',
+                'ezcconsolequestiondialogcollectionvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_collection.php',
+                'ezcconsolequestiondialogmappingvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_mapping.php',
+                'ezcconsolequestiondialogoptions' => '/vendor/zetacomponents/console-tools/src/options/question_dialog.php',
+                'ezcconsolequestiondialogregexvalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_regex.php',
+                'ezcconsolequestiondialogtypevalidator' => '/vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_type.php',
+                'ezcconsolequestiondialogvalidator' => '/vendor/zetacomponents/console-tools/src/interfaces/question_dialog_validator.php',
+                'ezcconsolestandardinputvalidator' => '/vendor/zetacomponents/console-tools/src/input/validators/standard.php',
+                'ezcconsolestatusbar' => '/vendor/zetacomponents/console-tools/src/statusbar.php',
+                'ezcconsolestatusbaroptions' => '/vendor/zetacomponents/console-tools/src/options/statusbar.php',
+                'ezcconsolestringtool' => '/vendor/zetacomponents/console-tools/src/tools/string.php',
+                'ezcconsoletable' => '/vendor/zetacomponents/console-tools/src/table.php',
+                'ezcconsoletablecell' => '/vendor/zetacomponents/console-tools/src/table/cell.php',
+                'ezcconsoletableoptions' => '/vendor/zetacomponents/console-tools/src/options/table.php',
+                'ezcconsoletablerow' => '/vendor/zetacomponents/console-tools/src/table/row.php',
+                'ezcconsoletoomanyargumentsexception' => '/vendor/zetacomponents/console-tools/src/exceptions/argument_too_many.php',
+                'theseer\\autoload\\application' => '/phpab/Application.php',
+                'theseer\\autoload\\applicationexception' => '/phpab/Application.php',
+                'theseer\\autoload\\autoloadbuilderexception' => '/phpab/AutoloadRenderer.php',
+                'theseer\\autoload\\autoloadrenderer' => '/phpab/AutoloadRenderer.php',
+                'theseer\\autoload\\cache' => '/phpab/Cache.php',
+                'theseer\\autoload\\cacheentry' => '/phpab/CacheEntry.php',
+                'theseer\\autoload\\cacheexception' => '/phpab/Cache.php',
+                'theseer\\autoload\\cachingparser' => '/phpab/CachingParser.php',
+                'theseer\\autoload\\classdependencysorter' => '/phpab/DependencySorter.php',
+                'theseer\\autoload\\classdependencysorterexception' => '/phpab/DependencySorter.php',
+                'theseer\\autoload\\cli' => '/phpab/CLI.php',
+                'theseer\\autoload\\clienvironmentexception' => '/phpab/CLI.php',
+                'theseer\\autoload\\collector' => '/phpab/Collector.php',
+                'theseer\\autoload\\collectorexception' => '/phpab/Collector.php',
+                'theseer\\autoload\\collectorresult' => '/phpab/CollectorResult.php',
+                'theseer\\autoload\\collectorresultexception' => '/phpab/CollectorResult.php',
+                'theseer\\autoload\\composeriterator' => '/phpab/ComposerIterator.php',
+                'theseer\\autoload\\composeriteratorexception' => '/phpab/ComposerIterator.php',
+                'theseer\\autoload\\config' => '/phpab/Config.php',
+                'theseer\\autoload\\factory' => '/phpab/Factory.php',
+                'theseer\\autoload\\logger' => '/phpab/Logger.php',
+                'theseer\\autoload\\parser' => '/phpab/Parser.php',
+                'theseer\\autoload\\parseresult' => '/phpab/ParseResult.php',
+                'theseer\\autoload\\parserexception' => '/phpab/Parser.php',
+                'theseer\\autoload\\parserinterface' => '/phpab/ParserInterface.php',
+                'theseer\\autoload\\pathcomparator' => '/phpab/PathComparator.php',
+                'theseer\\autoload\\pharbuilder' => '/phpab/PharBuilder.php',
+                'theseer\\autoload\\sourcefile' => '/phpab/SourceFile.php',
+                'theseer\\autoload\\staticrenderer' => '/phpab/StaticRenderer.php',
+                'theseer\\autoload\\version' => '/phpab/Version.php',
+                'theseer\\directoryscanner\\directoryscanner' => '/vendor/theseer/directoryscanner/src/directoryscanner.php',
+                'theseer\\directoryscanner\\exception' => '/vendor/theseer/directoryscanner/src/directoryscanner.php',
+                'theseer\\directoryscanner\\filesonlyfilteriterator' => '/vendor/theseer/directoryscanner/src/filesonlyfilter.php',
+                'theseer\\directoryscanner\\includeexcludefilteriterator' => '/vendor/theseer/directoryscanner/src/includeexcludefilter.php',
+                'theseer\\directoryscanner\\phpfilteriterator' => '/vendor/theseer/directoryscanner/src/phpfilter.php'
+          );
+      }
+
+      $class = strtolower($class);
+
+      if (isset($classes[$class])) {
+          require 'phar://phpab.phar' . $classes[$class];
+      }
+  }
+);
+
+Phar::mapPhar('phpab.phar');
+define('PHPAB_VERSION', '1.21.0');
+$factory = new \TheSeer\Autoload\Factory();
+$factory->getCLI()->run();
+exit(0);
+
+__HALT_COMPILER(); ?>
+)         
+   phpab.phar    8   vendor/theseer/directoryscanner/src/directoryscanner.php"  \BVA	  P      7   vendor/theseer/directoryscanner/src/filesonlyfilter.php
+  \BV  Af      <   vendor/theseer/directoryscanner/src/includeexcludefilter.php^  \BVT  Bl      1   vendor/theseer/directoryscanner/src/phpfilter.php	  \BV  FA      '   vendor/zetacomponents/base/src/base.phpY  \BV  \      0   vendor/zetacomponents/base/src/base_autoload.phpN  \BVH  ¬      L   vendor/zetacomponents/base/src/exceptions/double_class_repository_prefix.phpV  \BV6  w      7   vendor/zetacomponents/base/src/exceptions/exception.php  \BV  CTs      A   vendor/zetacomponents/base/src/exceptions/extension_not_found.php6  \BV  ~9      <   vendor/zetacomponents/base/src/exceptions/file_exception.php-  \BV        5   vendor/zetacomponents/base/src/exceptions/file_io.php  \BV  O;      <   vendor/zetacomponents/base/src/exceptions/file_not_found.phpJ  \BV,  T]DX      =   vendor/zetacomponents/base/src/exceptions/file_permission.php  \BV  Dg7      I   vendor/zetacomponents/base/src/exceptions/functionality_not_supported.php>  \BV   V&J      F   vendor/zetacomponents/base/src/exceptions/init_callback_configured.php  \BV  :      D   vendor/zetacomponents/base/src/exceptions/invalid_callback_class.php_  \BV   
+Z»      B   vendor/zetacomponents/base/src/exceptions/invalid_parent_class.phpE  \BV        @   vendor/zetacomponents/base/src/exceptions/property_not_found.php  \BV  "yA      A   vendor/zetacomponents/base/src/exceptions/property_permission.phpf  \BVW  >D      ?   vendor/zetacomponents/base/src/exceptions/setting_not_found.phpT  \BV  H[Y      ;   vendor/zetacomponents/base/src/exceptions/setting_value.php[  \BV        3   vendor/zetacomponents/base/src/exceptions/value.php  \BV  .Ѷ      6   vendor/zetacomponents/base/src/exceptions/whatever.php  \BV  8K      0   vendor/zetacomponents/base/src/ezc_bootstrap.php|  \BV  Mɶ      +   vendor/zetacomponents/base/src/features.php.  \BV
+  '      '   vendor/zetacomponents/base/src/file.php_H  \BV  ^      '   vendor/zetacomponents/base/src/init.phpV  \BVu  ko      G   vendor/zetacomponents/base/src/interfaces/configuration_initializer.php  \BV  E      8   vendor/zetacomponents/base/src/interfaces/exportable.php  \BVB  5      9   vendor/zetacomponents/base/src/interfaces/persistable.php  \BV9  J      +   vendor/zetacomponents/base/src/metadata.php  \BV  b      0   vendor/zetacomponents/base/src/metadata/pear.php  \BV  <      3   vendor/zetacomponents/base/src/metadata/tarball.php  \BV  g^      *   vendor/zetacomponents/base/src/options.php  \BV  y*Ll      )   vendor/zetacomponents/base/src/struct.php?  \BV  t      <   vendor/zetacomponents/base/src/structs/file_find_context.php	  \BV  -њ      ?   vendor/zetacomponents/base/src/structs/repository_directory.php  \BVL  8'U      <   vendor/zetacomponents/console-tools/src/console_autoload.phpr  \BV  i      >   vendor/zetacomponents/console-tools/src/dialog/menu_dialog.php  \BV1  wԶ      B   vendor/zetacomponents/console-tools/src/dialog/question_dialog.php"  \BV	  t      Q   vendor/zetacomponents/console-tools/src/dialog/validators/menu_dialog_default.php  \BV   +      X   vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_collection.php  \BV  ON      U   vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_mapping.php  \BV  F      S   vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_regex.php  \BV  {      R   vendor/zetacomponents/console-tools/src/dialog/validators/question_dialog_type.phpC  \BV  (      9   vendor/zetacomponents/console-tools/src/dialog_viewer.php"
+  \BV?  R28      ?   vendor/zetacomponents/console-tools/src/exceptions/argument.php  \BV  Xζ      R   vendor/zetacomponents/console-tools/src/exceptions/argument_already_registered.phpE	  \BV  /wm'      S   vendor/zetacomponents/console-tools/src/exceptions/argument_mandatory_violation.php  \BV	        H   vendor/zetacomponents/console-tools/src/exceptions/argument_too_many.php  \BV*  Y۶      N   vendor/zetacomponents/console-tools/src/exceptions/argument_type_violation.phps  \BVu  [:M      C   vendor/zetacomponents/console-tools/src/exceptions/dialog_abort.php  \BV  "      @   vendor/zetacomponents/console-tools/src/exceptions/exception.php  \BVP  [      J   vendor/zetacomponents/console-tools/src/exceptions/invalid_option_name.php  \BV  d       L   vendor/zetacomponents/console-tools/src/exceptions/invalid_output_target.php  \BV  ]vmw      I   vendor/zetacomponents/console-tools/src/exceptions/no_position_stored.php  \BV  RGy      M   vendor/zetacomponents/console-tools/src/exceptions/no_valid_dialog_result.php  \BV  X      =   vendor/zetacomponents/console-tools/src/exceptions/option.php  \BV  }Y      P   vendor/zetacomponents/console-tools/src/exceptions/option_already_registered.php  \BV  -/߶      Q   vendor/zetacomponents/console-tools/src/exceptions/option_arguments_violation.php  \BV  ~x      R   vendor/zetacomponents/console-tools/src/exceptions/option_dependency_violation.php  \BVr        Q   vendor/zetacomponents/console-tools/src/exceptions/option_exclusion_violation.php  \BVh  Vm      Q   vendor/zetacomponents/console-tools/src/exceptions/option_mandatory_violation.phph  \BV  YXpA      K   vendor/zetacomponents/console-tools/src/exceptions/option_missing_value.php  \BV   F^      F   vendor/zetacomponents/console-tools/src/exceptions/option_no_alias.php  \BV        H   vendor/zetacomponents/console-tools/src/exceptions/option_not_exists.php$  \BV  6E      S   vendor/zetacomponents/console-tools/src/exceptions/option_string_not_wellformed.php  \BV  0      M   vendor/zetacomponents/console-tools/src/exceptions/option_too_many_values.phpw  \BV        L   vendor/zetacomponents/console-tools/src/exceptions/option_type_violation.php   \BV  D/      1   vendor/zetacomponents/console-tools/src/input.phpK  \BV&  }h      :   vendor/zetacomponents/console-tools/src/input/argument.php  \BV  h"      ;   vendor/zetacomponents/console-tools/src/input/arguments.phpb!  \BV  JES      J   vendor/zetacomponents/console-tools/src/input/help_generators/standard.php9  \BV  Bj      8   vendor/zetacomponents/console-tools/src/input/option.phpO  \BVS  ~      E   vendor/zetacomponents/console-tools/src/input/validators/standard.php  \BV	  x      =   vendor/zetacomponents/console-tools/src/interfaces/dialog.phpT  \BV*  /Z;      G   vendor/zetacomponents/console-tools/src/interfaces/dialog_validator.php  \BV  5      K   vendor/zetacomponents/console-tools/src/interfaces/input_help_generator.php  \BVt  Ӂ      F   vendor/zetacomponents/console-tools/src/interfaces/input_validator.phpy  \BVe  utov      L   vendor/zetacomponents/console-tools/src/interfaces/menu_dialog_validator.php  \BV  T      P   vendor/zetacomponents/console-tools/src/interfaces/question_dialog_validator.php  \BV  &cֶ      :   vendor/zetacomponents/console-tools/src/options/dialog.php2  \BV3  Y      ?   vendor/zetacomponents/console-tools/src/options/menu_dialog.php  \BV  1vf      :   vendor/zetacomponents/console-tools/src/options/output.php  \BV  0ِI      ?   vendor/zetacomponents/console-tools/src/options/progressbar.php  \BVt  e%      C   vendor/zetacomponents/console-tools/src/options/progressmonitor.phpF	  \BV        C   vendor/zetacomponents/console-tools/src/options/question_dialog.php  \BVW  ia      =   vendor/zetacomponents/console-tools/src/options/statusbar.php	  \BV  p~[      9   vendor/zetacomponents/console-tools/src/options/table.phpL"  \BVs  eK      2   vendor/zetacomponents/console-tools/src/output.phpM  \BV  W?      7   vendor/zetacomponents/console-tools/src/progressbar.php:  \BVd  m|      ;   vendor/zetacomponents/console-tools/src/progressmonitor.phpZ  \BV  q      5   vendor/zetacomponents/console-tools/src/statusbar.php   \BVj	  rM      ?   vendor/zetacomponents/console-tools/src/structs/option_rule.php  \BV         A   vendor/zetacomponents/console-tools/src/structs/output_format.phpk  \BVh  +-      B   vendor/zetacomponents/console-tools/src/structs/output_formats.php+  \BV  D      1   vendor/zetacomponents/console-tools/src/table.php)s  \BV  sB1      6   vendor/zetacomponents/console-tools/src/table/cell.php  \BV+  (Կ      5   vendor/zetacomponents/console-tools/src/table/row.phpw/  \BV
+  h%ڶ      8   vendor/zetacomponents/console-tools/src/tools/string.php  \BV  F)         phpab/Application.php   \BVa
+  K䛶         phpab/AutoloadRenderer.phpb#  \BV
+  B"         phpab/CLI.phpY  \BV'  ޶         phpab/Cache.php@  \BV  "9         phpab/CacheEntry.php  \BV   ж         phpab/CachingParser.php  \BVP  I!         phpab/Collector.phpe  \BV*  gLq         phpab/CollectorResult.php
+  \BV  8[         phpab/ComposerIterator.phpy  \BV  R         phpab/Config.php/0  \BVk  ö         phpab/DependencySorter.phpm  \BVo  0&_         phpab/Factory.php;  \BV+  Զ         phpab/Logger.php  \BV!           phpab/ParseResult.phpg  \BVW  ߪ         phpab/Parser.phpC  \BV
+  lP         phpab/ParserInterface.php  \BV           phpab/PathComparator.phpf  \BV  ha         phpab/PharBuilder.phpw  \BVD  LB         phpab/SourceFile.php   \BV   %         phpab/StaticRenderer.php  \BV  ,         phpab/Version.php
+  \BV  ?      "   phpab/templates/ci/default.php.tpl   \BV  /]i         phpab/templates/ci/phar.php.tpl  \BV   ~          phpab/templates/ci/php52.php.tpl  \BV  ^@N      "   phpab/templates/cs/default.php.tpl  \BV   Bw#         phpab/templates/cs/phar.php.tpl  \BV   2q$          phpab/templates/cs/php52.php.tpl  \BV   &N˶         phpab/templates/static.php.tpl   \BVp   휺      "   phpab/templates/staticphar.php.tplW   \BVT   .ֶ      Ysbk CL^_j?[!QI4F6ۻ{:&)nwo{{_~[<,Nޝ;ċURhLÇ??DB/zI*?3JZp'{4	4#"CɄ7 Ld.Z'La4x$E2Â' M$~
+|^8	9f0#? >!<=Wzni$z)Rēz,M喊4V&$@S\8KZ᪓<9;ZK(~<YyJ~ $Bqt. )B4y y&+EXoR<'"Wd`)I<qS̠.8吙	$#Lq"3FC.,33(
+(4!
+Hw ۺջW8ɠcmƅ2[ӵkSASypN3}qAf:sZciMC.RV+SU0Ճ>;7]U{kҊ=\Rfzghh6I0 ]g3TvL0*#"\xPY`r۬ͨvD%8i0D!det8]]#F@%됓:CIqGepmY]iyٷz9`X4a-\Z4Rj8㫡Hn̶W&-jݕLe$!]тLd8;nWE{`kCffѬEt5ehٺC4z+	tܒZV'3bh]ue|g|ZxGoi[uOpӮE<Z"]ijpU"bf邑=C.lۘINDf)}}-?NNHdJ &x!%f8e+9,<Lꍃ0HW&%M2w"Gi$\Y/e!K$S{cqJd#sIIQ,UBWn-cgU3{IkڶJ2n^ oUx^֤
+M.$o4/Q*wV*[C^ւL:\Q//N KkDkzNa~έC
+ҮXz [z,ě&`>>H~5L$kr}_i*MM(PW_bMm/~-jΆ{e1iFܱv@mD,Æ9,34hMs-{ՁT5+*CP¶TB0eȅ[/q~C?˝^&|AK4NX~!͋-ߪoڭfy^	_a)l1;@ԑWπOØ2(A{cȬY[y>?Yaݍ޽-%U,%`U~Tvͣ藡M~-³')`BהugpoVn(@'G5Jq[5a-yrD1G߯Uq=5Ks|8z#9^_̕ŜoϺf,痽*kXR6hB,B3]Tv̓gN(1bTЮ~kK)[4m'էԠd}8snע8cd=ƠpL/~Pu@Q<PŽCqS	kW|<1ɪ2jwɡzr	7CSHתVci9UPc7.AZ
+T(CK)QbSϟ"},,#l_+YQfڑOGKٶꧥ#CE1?|_RQ⯺H6b]:`;/HUVjz+ނs>Aeme<8q*%G'yvkʞxyU`e9اL:ݓSkaB+
+WIJ/Ofe6M|Wq
+woĮ;ɭĐ睌`}kVhgtDLUIRzmHsFͽ1>k=xN#V&gvS\ґ鈵Eeڎfw2jr:kui=g[ |ٹ__oůUK#_ͫ_&X yxʡf4Rt~_U|ƫKyi.ٚ3I֌	dEI{stgUxɷVao6_q(V.ܤ+eiE蘀,y4@蘈,,wGɋKlKwGeٍ߾[ݽכ>	<S)QIP)+KpܪɔB諶u*
+tnMʕumv
+w@mw6ֹ$)aJ`V7*`g[]CSS!BSuA[՜nT^i$%XyUߒiTU7:WE[(pfK:e-Zd?֢ۭ'q_jt02ZqƹA!#],TrAU;=+EԠzlFA'Hhn؃TN}P{U]Y;$]p"^ WI|xuE
+8X"\҄ϲ4ƅWW͋.}Y%LU$^r&#?M1q
+!_=xQcOC<%Kz3e4sLKRg*KV`@%\Ǘ,8B9R/K3dYȺtXpT㓏:"p
+b|NÊU,دoaԡM-x<'(D,epǁS^L|0NL)&I)UC3>2I?Qʒ$[<&(*L=qjFpISX0\m(&<C~:Ĭg:("v31]p&.ȇw/<̜QnӐ[8hZssN;gWE/z't'yXڨeU)ųfܱ{r8^1M%N:f3@ؽx4r+H7J(e?F#
+u%Y6%@Usa[Z8ȑ8{,нsGQ2=֭24-QV~uu񞰖W682_{&2.Jz/ọrWz#-.5/,y>Ht<Ax/ٺƊ]{ʻ/n,wH@˻=kդ;5F8)QfxC	3}zioX9DmcdwBO^Pkٖ3rџV]oH}Zɮhҭex$^I#ekѪ}PS'mUk)~{z78~r@/)vw*^W4LF^yǟd\x#ORU%>[vG|͆uIJRZ4++-*+ryJu))˩,jHrhUmimVPYm4[e,S(I;YUɔvRTkQោͦkJ<ʹ]iz{J*VH]jbYhQT^TY"A%+iO?pBd#TG?@=^:4676״H+CzǨKE[QIM/)%Oї:Jb/.[BԍL
+y
+=,ۢ)@iAHY[tCkr'gt)^yhe$`_!#̥`~iLsYX㐏qgvgf@fW>CEgssY}[?>ALq`5LhBgO{=_:!ma̝g|΃N|#@\b̏)ڞ`Hv8f k=քC.oxHϢh_d[x?AN=ϑvtEfx0Ѯ8ykXxDE,mKA"?1<?	`HmX79 ~5]NQvŚ8[@'k"*{ɒ=~|ii]Lk<:	~i#Bolk-SZ7ʦ%ow;l'OZmfJ&شwQ"\*#52q7t{68 G.y'Dǃ9k ]R!xw0Ц$sM@?Q3 $rW%->peySy,?g n=uJNkKj}H:ʍD
+oE:6O\eIɍ50"?LKxRM|V@_{{T%d1c/HP⮷zwB,['OCi~J$fHk&J_N!JlTiv^ڬH_wPTC҇ӫoL}V}p4BOP\ӯwNW/O
+{:/v;uT?ujCI=fJ1ZQ2ZЖDJaP$;Bɲ(pb9ZGf<hG_jʇ?lh)?Qŝq/[pcVбU0%˓{_~`4,),JOEpb_Vmo6_q(Z"KM@<QJ  Kt,T$=EͲ Hsww~mCtB~>~w{RҴH/jj`>O2y c]S%kYZ,*_MJJʌZR^R*dIHUjfK2_6SYDX3$e˛Ff}al$pB=rmWl>q_bImA*v[7ȧIM^LSiuhg̞Ei;YC4:ZD?D}J۝,CvI#<)0gSenlNYI\wXGZK]HD,3ĲS&eH:FjiPC{:mUvV׃L$Ytm^wK9&EDsY(]Qȧq-`<lUȄ $\yxp~ęܟ[fǗ<fX]hc
+fd֞rG7G8KVvq'P#pF:Eǳ'~]1?"=Ō0]8e֞zs]2'ҙ= =Ċ9\/gd[ k=ɵ9}IN<i(OEģ8b40/Xx&>C\,'mi9PXOc5xk0HmX79 Ѹs]/qiŚ8[!@5|Fdgsϙ0-45lbJ+BϱN\b떃r^q|lJ|p*bgѳx$IlB%9OZ<(O],@tY#h*\-D1YRB+<4)KtG#mj$64>ߤѽJQr&[z!@['Ia>-3Nu/+.DM:5_̈be5>;I\J`ZyfP@ym& zLmUUz͡%z[a*\ˁ]lhӖiO	&/7Ωtk6goK{{U;]&z2_ٌ'wY%Vx2mONΞпuDm<kw۸+Jreiubg<ibN4CĬ"$eE3}  @$:}/_-nOzOľxFR88g"B>5(Ȳ.o±39yBNN*Hx,II,Z'ׯT$I*I+hC,r.<
+q-%9?)'a U0$" *LB\:DsB'rl,i8Ee݆XI~^h]'KEEbFG@HOpRC=m_yqe&B~EbEf+G$D@djAB[V݀&鬧I^\ i=],n2Lǣ8QB	H U
+gi%T0Mmɨqr-ίדp~w7`prqs޿qzyqv~s~y^8og!eH4DʉO%l!4yl̤%w2m<P 99)US+]D?)y0 kȞ%V"|2M&A,KVKPHaN|=sNZP-yKA4m	Jc"HABnq+o4]GErqֿ anW%H4̌Ƌ'߼{YL-,ELcd"=^W˳w7 'NFY} }VzOh-#bx FjU5!JP+4w{
+]
+iwA`{^ ]ܑD2M`{$]w p|gcYe2G7K bx,
+Ι艗QT%0_L-P1XŀI-̱ivy̔\yDNew4hYK`qh_ QMBv72]J2M[%/8 3ʓɂakhzG\#:p ]Pr9G*RHlD$_lA떁 2LK@F+%5)0f("6܅ ,S10Z ~rUH.L#1}koߎo G`^n&sw@.? -+WEN:8$4e2ѡo11@#qBaZ1aJà9S(edWF].(R^%F>
+mS]$˒qdL@(p~TA52\M^ًr"8	pdjZk8 @5,}U/Q{PFiy!9RƬ!8L̗):t	1=bDUDۃ1Fl=1?aL0R]Ntƛ``M4i MkPDWIv9V eb(I"wCl5[6eY*B\ dOR(79W=Y0;pqZ3Æ+d|c@d
+}yq( Obdq6+gaQΧ舕Z<~th,}nxC/VRǉo//|;^E+vDFu&Pמ6ȍyB̕SF5=$dфj,+ a0pAfɎ lK4z|o>CqTlooܳm'/Zw2z~zDv-dڲۦacFrX]TCMB˶e"/Lh>=|?,l~n3bT5El\?=\`='ǻi}G`&Pz@x};I{%8I=ARSӞ7	vmQy0p$JffT@@8`SWv{Tt;Xղn!%=`@tORlwN247E@8Q2)SfmX8D<v~4zscÃү.?!d:i!:Ŵ%n*OUR4&u0Hܞp̙v BY	 
+Oxp<嬖mQʉt hjXMeXQ^}9͸]RExݲ@U R|.Pu\yΖXJ91k\W	o2ĩ9EŕYt뢘9;d"̙L.qhh|01%	?>3q Thy@REl%e0=ú]-fs>{}ּ%oác1MT]`kaM{I?ڦ`{~<UzA:Wҥnx "񻭵}l|5 ͤ`vڨ2ԭ53[]:Mq` -N96`>b.֑)e-pw+n^Aec2ֳ a[ K/jL*{?T[LAbĥ7hL |7öPƆO
+	8>c#@W`XYƀ\}yv1!@hb@µ瀭/v%0J%'B)̆ꈒ>0dlMѾX?)P*[UUi8鬾Z]5u5ѦqIF>k]͞,z͎S$kD/ І0b;5yo>8d]t=U*DZ>%pwtFbrNiFVH T{5l:<,]2V=b;ebFBr!Uo*FN;|)H0b3bp}
+J=e>4ތK|-6xh3U~s]h6l"Cȧ&a.sj*~3YePd^Tk{ .ÈoSdr=`z
+o9C>AVMx[:w9?ˎP ]	J\`بab}P
+5t
+>swD<>>;)v$Zxo]վL}c~'S`ڌ{>A.e7f1ƤݱzMh/ĺd%1	6E4)6zY:5q&Ӝ69njc[Ud;sR$yL"EȤYΆۘ}]D&oMU0>aRL`m!ec0Unwi?;07`5;[AcEMAqL@w&@ Zczꕌh`2{Vo@ѺFUgS VVb6/H W
+ >J/rcR9AYg7>54?ҵp'pJ6u~	vե)ͮ2Y<wvL/s'+	/ZʌJcϨ*1ip!.CZwhk	6|\wDK]jXZ$UG8T]1UgNR[RzK}~tEWġ3\Zt@ٵ1pÚEyV!淪Aag[>r<#l)jbUb $~>f'+Q(x~o)oS]qӉ̚u]
+Tﱷ&Wv/4	@BVχjlZ:y|eaԡD1 ~V`pT@%:ƈ'EDu+|V$;f>rZ^]OtwtJ".u899/
+H@t;ıՖu }&ޖ^A6%ly{zoNuQmaVJv?9+TVhhkóÛWMpqS{cmZ&NYZxMRq[Ft[oJNͯi\ .W|6/!rS?8Ƈ䔅m{[#([Ә{/=-_zس%<Ey[&Qa{%IM$]h@vkNnjPK%^Ias\);lF+פ]UEp	m=BcNT0n"fj՞}[깛k*wɒd׈U].X &wi _amQfAEoU\5=x6*&כ `ʘZPFme==A,xHwh@_ndLA2?<Km#LSj\QJ9Xe:ȝD+" U,)ަiҹ`AӅ}qDUt썎;LDZ@.R̱|geo+6Bq;|eDf!&[ٛgtkS7yyx!+K68pC+Ԑ=\l#z&}7Yy9eqrQ_!aHE{s],@ iȒ2?~{\%˩,WQ[< 9YۀzenZ	~=.O4U6+nZ*7_R]~ebJ0JV|6 Z2ZKJKkF=%ЩnEg#^dU8J.0ATyfC؞֪*;
+((@"De>h5ahb1&M* ȃVY2+|-|U?o:zk_ܙ%ZNL7ub7^K(5 "ҌrI+,*-K8u*ӯ93xu|	Ju{fQd}",O@/vFb:	rnWmP|
+YNwK/Fak#炙I#KU;jkȒJ9+{/ 0*ZGrH+qL|?|^N'7x΄к]$Vi[p˯4x.n5wt0^|*^= ~ƦN`L靃́x`Y >2:4\:ףxN~^"eQМn-+ieVTxwels.\,QpdYASСM_Te">I}=ͮ#c}#9L\RzPYv-QVfnn8DnrZ+l6,AZDeRKRQܧ!%JCQm$>́!}q,FÈ<iE.h$24B}* 8'W-մ1D+*,EjAwhyO-aԈ>	i\Kv@5LЕXjgjP1}DH%76M	b2*3t]%ˎTGVI%Zܺ\ϢlRdcL ȤwrFt|{sƪOLФTpx-u(c@AS6"Үڨ/!G?	Ô6Vv-~à[gRXJ&Ƈ3Fƚʬ]( E%<jLע!b],kt3Hݐ(1#vڅd^]^%?j>&%CW\HFLE!SC6bYI3 xM OLUdqb62WC?ȧ}P7nt[<H.%YJzak[{K<?#:\]_Np܎_P0E5}vh.4m\೜*B(鼑8;~\*E/jq}QKg"7=}j=P{KD9uKg?*BH9/8]_ZO)J	
+c}HE$OQre1:kεˣvQXi`v-<rP4Jo/x?y~@n`'Vzo_h^zfd C#><~}W]&ރZ\Aʚ;8C89jgp}Ӈk)w{v:*3W(]C(E``/ش19:Jbx%	U	;<u4>3%fja r8(sO F=Pb"{p;*x_tm披zrU^ts|wsIkoFߍTo0_qBZ*F}luZSCWSe#Xvf;K;'	ؾw޽ǳrYvHh/V:D_\84ռB8wqfq$^	D0oΰR#SLa:}M1V+E"+ R ?W )QK:>D)N-
+PV1yiʵU҃5ZT%1tqpLK\צjnwbpPNCJAgt2KB	-CtnjoA̜	"P=s4 ޗ'IR@I\cnuΑZ?*eIDIUIA.BШ` 	v,Z, DQw80}ϾLogp7Nf7p1\g鄾F0sHQ*|*-J+َb얶ODJ=W"GOaRJ+帵+僩x)Lr?2XX:$I>G$a={/d-%jbe]SѲhnZXUp 
+"[Qdb@s$߬Si>y6fݡـ?pAl`PEO	QFd4%n֥|~n}R̊?llƜlԞJ2{xQ߃^ hD懒ҥ~rR/='}r{9=H:j"ߴVVY5=F~9twxl:٧TaO0_q(Ui}+jնV"eO\lMݤM#Rƽw޻;* 0W2!_2'J/1#
+wo4U>z\1N_Jm4T2aG#WԠ$:P*)E\[:(6eDi Bj)tD4#4J?@JXW $j̘NDYnA5EENJ4ȘM,i]5c?(q@ѩGlRYd6]"VV`{tn[8޷ITK> I6M3bH,$y49&Vh<*bYL\ָF &e6thn^L( ̢\Y4v	w㛛|9Dz-6!C@JSb*SMK'S!$Of52CƵɄƣq=mݖ|&\*Iౝ0d405|2v{ow-;N*ρּ6ڸɤ$b4TݾWo:ϸ*$ɢLlO2xQW/Tt1V!N\բo@۴W$[gfɃjf%yIZKӭV+"nDo*qHt!/auvϋVVړ9?oaa=r[~Xsn
+spqTao0_qB
+iumAEj~LrNSVwgv"!{wtR, vHfVNH%U
+n?SaqPYD.U2|pq&%8g1aN{1Ez*a<TxX{:@h@+d6k`tm2Hb>@Oě[RPi J%DriT{"4
+X+#ӥ])4v)7c)Ѩ!c7uZʞ=FXhS ZVȣsw}.ˋL
+{tn[8IK?saVUp_4l$I4|O̍ZR| VLT<A?(o bQJ{	ǴkZCPۄQk8j G=.73\_&05M'x:&w: eT
+
+"b秆-0<"EH#>
+4<ZK$G.7_Sd!a()0>?RAs_?ؒ}n@Dv-O:Y#{wy_0ً?.~pFpV'&7"!9[/Cmo@^57Bs(na/JǍjoWTe]t|Mh_]|xvk/=]Eex̱v	<7-m+7,e]/:X'TQo0~ϯ8iJ&eKYJMG7&;ݤbBPU>)?:BȤ0.
+0%~ΙF{>e.dӚt3s0eȵiBˍș
+@
+jvU_m]F`BQ=H]xFsw8"rS֔9Y\PvD,PaTnUf*^d+P7T/RyOFeIVn:)՝cDV5uéClBh|\&Dn*DН}x%+1`N
+0cPӼm'HUD17BɭoXC2"km] V[`ئgz$}lcG (yDrq]\q	,0[Q-b:!-*/ƀd§FYĔ[G1SNK'`<#yذJ4jmk5i<jnP}SۤےOdMe	}FS_}{ᣔ~/2׻5JЖ<+Un&Vvfʉ%[QYfvߑyA/~/e\)Oe.|2_]axvğC_.|v>z Ua8_1*-8RGzktT~Lbk;8j8- {3ooka!J	)doXi+VCk#dM)(	kWvcB2c6
+kPZib\(ryťi 	6r38$	S`hSveY	BBePtkT'n
+Qy,OE{RTŘߘ$:}	# ?262EbU]
+&S=?IԖzJ;fMz]M%<U:=VvD i%oֿXXRE%먃Q ȢXqO8P4G`٘&'>	8]y]^M%Z||o.?xvKGZd*<;@n<;<,琫\ۡDCmdy^t?.|]svݹ{Ô,]EV
+T [m<[sfǨ`UkjD9}r0\f'OWmV =0NݦwgEL1RLH_
+ȗ(Ԇ[A! 4R c `mBf/PYYg.3:y6[G!:D#&xj.\UQCb/lf7{6ӧԵqW~sr
+d[04xPZhiBO.(Nm;o+ЖZO;W_-+t[QJ?i\{Ji]]Vzhɥb[gOD/lv wzчq{^Un@}WJ\DqǤmJ.T1ih14;J3s̙Yʽc"DZY!T	EhX*ZG[D(
+B2P8ED^JO42Zȴ(-uFAPb"|rqKX5TҮ(FPi KJ%XriTt9"4s7F&+Rh̩ޜ[	-Nܖ^7lZ9c ?(~ yN:PBY>;S,OPC7jǻ&^@V@/@XF`em~UU#<&	o4zK[̍J(H4b"'VXTT<A7(g bQR\%F	ǴHl0	}8p nGף|r.f|2ү1w:^ I2*pTniTɥ="AH#9L<ڂHdLZg*އ{6[~TTqHr}*y(eЮѕpC 
+KΌ$JLsh-7P	1M-y
+(0vv5<wk*~{=ydpp4kҤ@au4A`mDlJ\D톱B v/ dPiԞ}8Zx>2Qmf;h8|U`_>KP/]K\.ۤ?~l}ËeZ/Vzn{wEҘ?NN\v''۶ChN^@.Wz[Vao6_q<kGg]:jiOM(l'uw|?_iONzp2L* JAS,V+KB"4(ǟHm͌s]9X?V@M@D!rl9pgt>eC)%\C85@*0^IjAJ2$)yGlwۢ֍Z){d#"~>. zSPb2EbyIC{ msR@?bu]#<&;{,
+CRe,1[V`W`l\3VS]Em0*L_]:(}yAȃA4p5]_.*X,rF0_d>;.~C0L!Ln%n
+C"xOrK[\%Gy*X" _qQlD1#֙GmK`):>x!aHk_4$SCGBa4<wFpu3cn(XErМWT~-*nPe޷:fzN`űKJ0͡H[GTI*%ۢ/
+Iz4Qc l)Teq?<^bF1w"0Kp-L
+w ?;~ו⮦_Xæ]W,C6.čx
+dn	=TYp69J\[vo1FT~X=
+9-+>},)c՞fպyčt<Mǐٿ(y/trdDSp7|`wMw۾v~ōw5y{ߍ;1Îw o'уAw{WT]o@|X>DjJPF&¤Q^)ν;ǡMV%?nfvgYh0` SAȴrB*
+pkZeNj%6mҺqO3damH<Lu-3Tspӌ+_Wak;>#
+ADl"zd/&"ϥH@#ݚH6"*ro@09{t5X;ЍBcײl%vb잸ۖnuZ9rc?-?	-`Pzt)+;/3%aeBeݺ;A[>V@pڹjEMӄ)btMMGanj/ *R%i݈;@*CWŐѶq^I$l7N!N{p>Ntwjv|>N$.feg	=Ma3{\d>WMR(ONK'[a&W2#{EP'4~P*4ZK"sG)e_޺)F~d*1MH	J}*.oGQM]S.9f5r8his\%FX{-G?Oޡ8|^
+9x|L9(l޾IRtLƈ8%qI{ R1(,gD{fy0yd}x:'¾_JghwXn<0L#xi9waq삳oTn@|+VRcR5%Tb(Oq^){>ǡ&D	!rQl^0`s!HPZKQb,[	05zb2{X8e4L%q0O%Q3bRI?YZXt"<t@hhdaժr"3H-bڕcGe83>QGj6TJ}5Q$Q|@iz{!
+oiUƁ5r
+:oVy+ǒ׭+M3F'8sqPLrIX^dJhэ!1+!o̺[1 犳 z,౱iZ~RgxDaYR~W" -TI"y~P> q]!iD-	?$0$܆%N'2Ű"
+"9L;F §²	Rtj4s*j$i%R<KRUɣ-IdBȕ}۸ْo/ԧoQ܊niޠIuvӥW)d-rNha{hG@EfQ$[i'BIPv1ycC{4ǟ!rZIGn@c}	Ґ+rS>};"jzSus/[];L0{!;;{Ekù;鎶3F_4#;apvTak0_qAc۱.Mf6ӕ~*|v:'u;NFg0ƒ{ZUQ|r	LU Bi+|aO(U6e~\
+&WF_BaJv7dT	Iajjv<J}_`4r6vĪei!(,wC1d<s|.4ʯr{9A,SZ4-XriUʃi4ZR[tڑq;.-iݚr5c ?%~c:Av?km<_DR	-Ctn8޶ fU/4@xhlw,']̵.9rW,y܂KZ+
+X4ŀ]ez1Hm"Ԩ7J!I{p1Jt 7z7lLR_x>L|FSn9[2 e
+7eTSǁP\IZy@ƤBVKdFV>4چ|!,,<ǂ@a_Gq l_YjzP9⅙M7Vz=2+b[DysU6h;7uoDOu:m-=46o6'V:ڵ8|ZːNv< ~8%kULowud/ipCc6A/DK6=j}R##j6=Fst9TaO0_qk}iVډ!>!qlC9I	MR{~?Y9F`!s\+Ǥ*	9"T,frY;rQ:pzE<Q\J.18Ӓq|D:q5ba+3;FcWa@+AhmЦ`r7R#D	@$_l	
+'|,mCtjm!A*ǒf9HB@#Rfbu32Z	c3Yyk-:1!E;]Vzb'Op4lO=`;PAe3;_e2Lqn@-Py+6`Ȝ+O	'ڤAg1.aU.jovJT欦F `U:&Bos:h|h(pp3.<VˋpҐ	T*"@iidKe"9SiR~H)L!-֢QHCEۤX{mBaSw>a_1GUw̃L|3'Yuh`Z['Tߺ0x`x۠fXog*]A6kn2ڑ3
+@b0>c.{2ϤRܫ7/H+Γ<fct[SKR`HP\diz>Si482Tao0ί8EDY6*2tU?UUmJ}giIݻ. LB\I˄2[ ~~ժFmwlX[$CJp3'G5tKƶL#Tӎt1zDJV*;ZKe,׈Jkf )Ob3a<"
+[P0* bY&\iVtPy".QctsUM!jrR@tCYҺSM/@uߌ)|# 'SKoGS]He1LtXUI{uQk7=`^
+a0>	ömg):Dzȹ%CM=^Ċ5q-Y&@,ZMeczi@Pۘ(J!NGpq:xyy:JV<5\,x/zZ@ܹ/qr9Q)ډ u?[9Ndް!WzBT¸"=*a>mo'jr{!#(ПY|ZrM[ m!yJxhsE3Ω42}AŦƬ5ӻ:Wl<dt5!Rp"Ej}dIf8?|x?.ܗ`#:)Փ_BGb<zGO=s}~Uao@_aEHS ;VD5O5q]}InLhD$~{E$!	mW
+-PdsU&w)VNji!%$?q%RJ LVezdEZ!REDnKTD~6_WXeg68"PKi;)2ɥERуa\զoZYQ%KI$ʒ֝޶RTf+%boG
+۷ạKl-z.+B
+ztn_8~kwz}1? Qu=P<$FY29%*ZrVxQTk!jo bQr\Fnt0Hҏ6{.I&^~Yxϖ$xgt7#?Ƴ YF2,Jvy8}r-Sr_ZRZn%G)*އ-yOvT"E>GEy7տRFݚJsn?[78TSM T-qMW2X$C Ԃ|KSj!sNNOQϠh;*ۇ_Z	EΤ<ymlԲ59>`S)orB)6ud$(O䷃}(B]V݈x	i}?D2r|Y?F8.BJo4?tbUWp{v{A[>E|b4z4^_2{,_69X,-! m6g}p\ T]k@|ׯXL!qǤ4u"!O,#ҝzwDдc3;WA80,RJgbQJ*[>X9vNhO],f4H+;X"YMУRVA2b9@z/aG=>őF=H6w#*eҧHE%@0w`dweE6JؖOK^\wŘ"??<hԽMN](e&$
+)Tsxӑz7< Ua4\6y[SedD+UT4TDER%h|Q< 1Ọm?6HևT6=--(uroeK8_&Zo#EJF2)৥듭0;="G=^
+M)o%G)?[}b}7!a(hsTa{6|DZK?䆖 =*o %J:$l%lW3CI`ѭ۳]EQpiQs[0+MGPeq/ǀ.9	uN[MjoRiSOHV(O50fݻB*䷷iw{=
+@_!FA֣!ӑ/^27Ni.t>	'y
+oUao6_q0
+	<ktY	fpmO-eT;J]7-6$ݻwwﯪm5HtN7`ʬ	Jmr
+[&VSKUQcUPV(燎
+x^S9T[j7Qf"n<KouTZ׆wzU,-#1l̑~q_]־A@{ƺOZVi2
+\jtdouxKI%\wR9ʺ3cBA$)6 aux2K#c՞fȅ*2YDwc@ǎĮtb*d7HA?6"I(xj])&o"{;SpZ;xڑ*S+h-T# 2A	t0ԏ76k44Oz	}/}b9Nnoo74[|ś	1,C(~$ZQ?[:33yr>Q+z\=JbSy~[?%OB%SI$I\gʤgg#@͖CA6IaU;#nt^v_㬜%
+Vn1_gAT~ O
+΂2nQTIҫȃ^VBO#7mryW;ZwdЧ'K@ +V+	i\Ex|0a袏4?`85PEaD5c۷{$7ɢwxO.iK2uQYi%׋rPi{prEoh^9v1m	'vLDt0&:
+Oϱ{xKiJNF!]$7@Gv<z=$}b3eSHYW(C
+qgiWUao6_q0<itY1fmO-e%ڎ@ɻ{#z[\LVNH%Un_w'Q6xaVڈb8PYi"W7a7NhTtu\7&.# V RD~\onaC`9># t[#-|y.(A*<4X3L{#*4v+kb*,]PuS9a݋1O)
+cA~u8y+4Uu)|tP0~5zsh:W_q۶#m8P?b>%m!{5ĚFy֐⪘r&8mQ n ل0Ia])W-?>Km
+;Y.W傾f,>s) IF6LJV?얾OLndFTш;4Ph*i@dJ:o*ˡ?pO'vCXTq{~f>JalmCևv
+w=~Bwf'h2fԾ8tPۀ?pC-p5$_frDQ$"FTÅEǞ^p_>פ_cVWHgΞh^'sFg+H\pXPr pݡ[{4Bs.On{Q{vwW1WSW蒗{ L5?	5b4*d^L{A5e9=w>x_3?QC&o[t=c~E0x5Fz!]:1R59$:VcIZʯ/:"lAGsuFOKftf[|ZY(=BOtl2g4~ $<8:h6:O(ĔFzN4xcTnF|Wl>؆*}m5BKp>ȫ;h)=@E+&ٛٝݟ.egg3:QklAdO
+|Wȏ쯟478KR! %wFSt	jcSiZ;Y֧W,yn澍PIfÒhǜook:st&1:T*ύ\*2DDsQ]{S\gه4o/RvLOBkQc1;?	4O	]8UtAn*NQaLkra叨ye]-U"t&;Tv'{[q_}O+Rt05* ,:b!0em/P6z4_hӛn[fV~s[^m-ִ~oՂ%UxF*?M-cB<[`*Ƣa_  T2j[S d҇!Ym{|HM#~tԕlbGqmzb9-a
+M&Jqx(~HYxVUU4?)tfRhVpDЕqAH#́ j,$Hrmq,nR'Yy|أYP${IU%.dȨ5F{2XtBd"Jki#BkY;Om|0{@ ;KT*V,wGs.GWj1Fm$_e?7h8N̆ц%׎)҇o?WEtϱeyhNQO;D/FA	5[~~|/}i ̿r޺w+_ѯXmU0aA<nŽs:=Od>>.~U]oF|~B0bGn2BԐQip:k;hE);{$m@`<-x]oArv63J,\FVZQUNHЧFˏUhjD)RЍjk	~ ƺRN6Mj!M	6&A[C'QMA"(RUE)gez39?׾[hO;>2\siQ68"Nt.צ@ztdwF95-YJvד-p_Z1Ē/Ư4Obv%dlি,U@ĪȘݩ{]xú8!ԗI"[W$essޛRyn=^I`%\K	AEΡqMp8!0 mqFIFi6,F!]_҇b1-iFg2tG#gnG2Rk"TsGU~৞-!(I9fzaJh*ϩߒ7}=')pQD$;Ƶy큐;R;$%\; :.Vtz=<Mӛ|ʦ( c7tByJlpp@tNFt<X yn:9_y^`o_@tpLpx|2#Zc_dc~N@V_EJ}G% bU"'ᕊ;g`r{{(Pr>ڗkr+FhW:>_B4_#j-ȩRr+UVm4Y>娀`{|xfp"%G`v_>M3<3va%<9DQ)./9q'Zmo8_1kkMl\&EnZm"2%H%I?nu(_DӨ{/ZP&LH!'L9/oLkΒ4
+)4T܇$ԝ/"p,X:LJh_10Yc1Jl"IDukۻ+4ʌC"b`0F(f3->i*iBXMEݑ*k'2nZuVHWݗ4i6O[Hс/=%(.
+6G[9P?-H8Up\,`$IX,LIϩ{\B1dBkm<ZP*Pր-hBi-.'	˔͉;٘^ &v1:|5ۏ׿Oe8(&%PRA~ONb]'qOI&&"τU(DJВnKE!COlW_mC^ù8<4H\9v83^3Z2?߿z__:lMCh48Q
+'''>>{< QY j{mEU3e
+Y+'1^a>nUD, Mxt^#%SWCȷWa-n	'_Dޘ E].8mh}	Ĩ5g+W ?w_v_mu,o{:s7Mi_A;~0=T%R!ӻhB@$Ƞ	Tܿq1.sزp0NG{>g1P?XYFBD@Apx<Y*oz>!:001䩄-TϤCj<O!YH-wFqf8Hv	0k#ܼNrXźW+1r|B&AeOum;	mGn[(TbIwRmʯsEjo5v4Cw1ZiD6(mZ~X*e$3[9L̼ŲvA$TQ?^HȞE. }jۓ{~c/-X/y#%bˍ@nKKJV:=n{$gufH{kJ;w|ʔIyhОUܟYRqݨ_]rY@ۚ,'!˄e)۩<+:A`
+0,=ԁ̞la^u\k.(vb`,22SNZ!TDC`U]X@ZXV
+^ze5-B_&W&ӅJG0)PY3WyC:Ĭ4ms:|}⠙1imLFU}mq)PĉUɁ촙>[E~Ɵ	Y֜4^f"y7lƟ@\5rQv_4s	A8]-)s&O<yu#"0XM*^\IHBcȼCش)3]KEixPGGJwOáknt.tKuޱfS-nY a&CxU{tP9m*S!	pQM]<"
+UK#+VboO;7Pa1(ɇw(2ĩMAxTQЅnU:Hz΂i&FߙG䶩=ysم~ao8&tw.H7Dh2+mx;+ O]LihSPmR\ht*nJG(]ێΠe\¨mlȴ
+83o$&Xlf;g@t9pVM筱cT)@I,wr u`)ʆ]*U>n
+cLք *&,.st.2W6~E4@Gt/L!׸[fwrƛ2OuAPnv5ct)f$"J3U^EЋI W7ۼC1O{R"\ϛ~p#Z|{0dsTF:l5|S1n{h"Bb^Lu1@`mǗ}?c-]C.{{S$vDQг
+Y㰴-:jTpAAK靬|el՛A*Kps˕ޗC=G)e`Q8!U,e3mR33mQ1kz:>ɤV儢<LR8̘b r`+
+L1>iSa"W&چKgx!}7*31ZW%<7P#ͧ <5Qgq0Pz¡3hX]bM Jf)/>+KUմMrxQ'֙Ry*R4;Q,Y6wΔnTʚ.3#6e/yU8/Pnl/&q/l%oZ|oc^TŕG_wozmFy6JSYL$}d(lvr7u/<gkfyly/<sƕXk4&@z3H剦rYK)&~⋤|Ms&o.|Q )B,v5NgO$y&>~?`Sd,MN3HaV&yM
+"LHr9dl,d(a$:@`sIJG6P<#ܚ,J,l\gltLΣ%wdlZiIq_o#և	h_iY欐S 9-qēVkOH:9D
+K4s\36WՐ4D6kBJQ<_V 1_IP *'3WKJtwjޞxu_뻫1e7n{v~;	`l%FQ:dp@mrKD( Yg/"KPY"[DE+cT6hj+93J6>jLL zD:r=mC~BnΤE@f
+
+$ ?-D>OCR^UlZ$(_#8d")1ȵłA3CuOsJ2a+c ذ
+ Лp )}#O_| s"b _yQ,&!r &r y΀F V3`0KßQ>M=ƳwvO0zlǚ
+(8G.)L	~( G$44iWZx}! %v;D^dͪ,"^ͣ`VR*Td\ѐ3q/>L{fLf?23}3ǯĴ|%eøZdg軔lO| @G~VNioD7Z:lȖ雋ޯ{2qhsR1`6CK#V-L0HctjH2K
+f-qoǒ?RaT
+|O(Vro,|1	8 r)|%0~l#MJc4O!V'ьTَ4M4Lct%8|]yև%|!h\W'a}Y 8Kx8|Cl ZM` 's5F\{
+uefW쬤cNVƅJ"U,p*~%߆Ws84,%FSx)t;%O=\3{͎pttWG	>{s.*JC)}ʱ?}WɆOZڏ[~6Jɾ=q	GjFqZNҵ 5n汌"̹ 2҅\s6'}sqt5l	FĘ ڀy&来	DFi7`%u[V*BZB jT&Y(`@*-jR^h5Ã-x;d1H!Zg;@"rE^Pq1YP_ՀZsձ!jStu7vX!'K(sLA;IMqtϽR2;gИ꭫K_Ϥ{*PX]k,Kó"BU' Ř4K 3k&]<"Ti ?,f,	M/7QgG|+;-6z6m=%5S3ENs"]RQWO8q=昩io0?؊q'a)Ә *}+2$Xaz%'*˫GZq҈5+#nxzC˫H> \DH],bRճ<Q!?eaR'	Y0E8hGkg1^aB~)
+2/ث6
+Ct"I=WAeI ~0DIdy5<6RS07~UOt66%PM?[ը=nC@UΟ+篕C(P9S$X*/q]&0ڙ ]qw+	6x;<]ֽ6l ʝA -{@o"ԤRai> ~TAx:u:-JսWt=Bd3Dx%-0sՁioОXvϔqn18)V_859}YhW{,gv[nA?&Qn'T%[NCXp}(ӄ	CNrh#IoE Q78Ֆ,O]y3:ۇ|*Z#F
+Ipu4RprkTuALQ'NK=rjЩ章..x
+@R&75l;6w^*4˝bjauog/h}躥b&K}g0۱f[R[`5~>K`ߐruĢgP3 /@3F>
+pA9,ZןHrVV#-B$	( v&ibER,&xdjH%cQ_W)H' `Z'-P(5CV0 '1
+KSWDfGiP  }Գ&FĠv6~j'Ͽmk'`W`qm[	$iucm:ϙ9^+U=Am2~3˜91{suV|- A5{F=I-E >VdO]%3_nݥt5}g+b7+J!t.pvx>|T6|9Й__T϶1fY4V,@SRI0[穞Zb	/^40s^5 '\qhؗs}-Sa?*ePA+Kգ"3(2BBF T
+mN%M?J=OƠ!FiּҼO;ڟvllOwRf)J"MVRBuI5C<+]/<ehőWw,tܼD;O;估y]Ů~a[DYQ2NZӽ~Ǜ^noP8=&.`WF(wC[M8S`EA҄;xWx+*MSu#d/kKϤ.4[vP--sJAt	꾷Zﮡ#5S1zn`lRk. ;"zFelyh^ګKu;{uOxSeI.嗞J.׮׮;WαU5Sq3MEm	6Q#eDKss΄t^MOwK?߽|?,0`BcZ+ڠ,Np_n\&nt5P9Jo	UK]"_-6W\;).h	*APɾq?Eb"͗S/@!QV pgO2.-V"9Ofݱ:EPz2Ec5_tC[F0:YmW§o] <G[>q'hT)1Z1Ȃ1~r\ewB^Ť\dT~ZkYK[I47U\H|5
+}.*!sWAPA",DK =^3%aÝ&}zO#$Sv?uΣ|*dJ):L^6У]6'!\ХVρSvwPadS<ņm"mivC^ՙB駛
+#[-W)[r1OW$ 2z4_dKzq; yf1=j{$K 6@eVo[`vܠm2UkjT<֧JW.Nkixc;jk>Ȅċ@{.싛KPrM~|U31ށ},<S>*g)M"qD)C)í-cp)'ŹV-w\Oٱ63;s,ba0{)1tIHk$IUxnfxFkی3]78nM^2f:WV #N<+_Ƌ:Ϳ& cλ2G.j!'-ł'	z|4`mkuO<Pz8T؈)}} sоy3.dEK:uϊ$qވjާ=69$MJ\QG˨Hk:1<Pw$ލ&, RrH~l%H#hʜg$gzSOBAoV*%^OϿ{`ܳ-pToy:J(ԭ<B%aQ#}VrW1u
+g[a*<76<΢VsnZıDУW%=_!C}K]'-#nȃ^?@:>]mL;.v-OGXɯ*^\_}{tXnF}WLE,(NF&va90VچewޙP.vS\Μr^%ggGpע*iB`3|,`QߋK3	K⟉U%3fN?%9i+iZL+
+oX9_piM`¹3s{?]]$L0R2AG)j3Qt*Zsj%6sQy::cx,ƺVUuHF~GCOtwϝA*S^Zt[`2u!s0T)`.P0K`nm9HjgyCLcfo&WQߕИX^llEtr @/V3.if6I.bMLs5:N`<9wx҃O_n?ç~|5;<k|&_7?c(Xj
+=Q5} :b&RO9jɵk0TZNfTTwb]LQˀ$aa$qb|{LbgRdfn2^5V 
+VoQjOm"CwvН2ٰb
+>y}1xc<RD*\9[rgbb9ci,J#CQMoaUƩc/|BF7̸M#'Zd!@IQ!?2n2:UtwJ񦬦X+0fL]6[Β?9:*^d(Xkе-w(QH+ItϛcS|E[F>x#]jOFs[i-$&~}ufV]VH56'}l᱗c4܎~tޚ-jҨ&-פl"t}FR*(ڢ1#Zn)#`i83!JkZB:>e,Z0d!TUNZ7vc׼WZ`;֍Ǟ?ދ WD۞qyd hpgZ5WEz
+`uxvFO:kP*.Ve|U	dB-JֹPnO:w6[˃tKcV\B	'_xٹack::
+Dl.YQ⎍]2jL[/.nHxb,GXXC#cfrVՏXFQlw/f7
+nqj޾X||9e{ܚ-3a,6sszDU/gW?tp'I`4X8Yޖ5R[ak𡷔]r~q\sK7Sq枖_S5"56-OGߙƨpc''B>D}a E6GIKcrO;Lq3 blHeB/T%im?oJY\#+{}n"=Y?٠k䛚'-X,#Ͼ[m>T.;$v^&̷i/k#1DJ1W}LsnsW3OGT]o8|X}Huc[1Nha{EZb+*IEq߻Ka$g|񪫻Yv}=kX@YPm*5}UӍ5{]&7:hlWrO%?
+:MrY_uZ7
+pzЌ#j ("zonaϪ_j?XC5`g3mCQNWu ;r﷕VUG-zYדs始?t1^\=`lӉAQX.kFQ=uw܃5~HN0v^-:Yð(xa]w캸E'{Ӑ֗^;xw Xkmp*ǎj.hBp~L'ӒDnmxF^/Ç|>,m~[n676߬mGAo@loE&XG<S iw^+nT=V'#j/GYdhuyoiJb?Up?%$ːS_ɲ=Gc,MV2G:guS@nJ0VIgʞ1T0Pl)CxLmIXzĖTFwf'?f85ɃJߓAD*%)B̸nureU#o?(U8=b0H3T
+?׶oIBfKӑؒTXWDj[>4}<Ǯ;l'mM\Of·$O/CwPF_%72ٷ٫Tao0_qNA|(i&׹$flgY9qWTE}{wgmN	Jh/V_!(?zJ{.P	%VHzd+\xe4LjF6c{uDi- 2 lOPYϕ@|Eg;(JEMi	Db)l:iVkR-ݷe)*qpM7J9R=6c%^)࢓qd6T7bx>>Hl=%bM[+e 7#ٱg 01Py߾I"^[&QbrA]g/t5:G)K=AJ0ԢgQ! Ģq]ιԴH24;,pnlp\yKYNfMo+Xok<UZALw<E'עT$O(Js6EQuD2x4ʇP9.}-NjC81!I"(%$	1տGI4n+k=)99jа̳_{;,MgQTCPiiP(@B>m:+:- 9enຖ֐l*2(i01c2]3#@P9dT+89iW%ΆL:1GFg`?}QGZ+i ,A_yA\cMyBDFWyE;F*=kofe+a/<,jmGnoۀ2svk29{?Ua8_1ZDZG
+lEjOrOM!lqnD]33~ϗML	]RWL5AiMAdkov^v&۫#itsNƔE2v:嘖5
+.匰dGHj:k6cERc?'JcfzsM{b t:ў:Tk9ZU:Dǅrlsp(΀h*r ㏅c`۞ʈu/#"@.1V26P:]M \ J+؝ }Tad˗y$]U<H(NT=jwRPe꤃Q @9(n+	mm Ȧb.)zHW}Zmm>nfޮSЛjڬZbY2߯o!		 բ(#?-}|ÙLѪP4j sأ!Ky?% 7)%7n{$6I^=d>LߊǲJA[GW&+xeB8P`+PM tY
+\VF3ce$}4wcS(8N6,$bZ~DEUgmݣUq)1k<Cٶ8%)J%۴;4e	t|;U:0htc@2BɃ/q;W.VSS:S=8;GHGjtTڣ3rq S'N^WmoHίC*N%-͋.%T=ػ>:w]MҢ$<<混i-8+#ZY!TK?
+baLZ`3"^BdW:WR+W]V:Dg>c&繥/b2CLPY"T&x?*6"i=,(CɩER+3\,2,Baf"R21>pz]lu	F@QtȀvy'bJ[n>Z*
+KX
+8ﲻusDyZ \+u3 6=Wp_gAO/_SѕϝB\f|"1ZcQݠ"#ղަ"A}LЪ&܌)mx?=4}d2FSb4݌ǟHQ*|L3n*(5>U50[9X",fN)f4<ZCEDDZG*î;U*yGps(d` KXQ%{JݜAXmq5ܺ2V1	s'sd^bE@'2x^#^'7
+<0'(1{bʉG<YC&$׽XnZ$px3كz7yqMHE&ūjrt&y4W0G)p+BxU3y(
+랫Rgv%R,i"߇Q&]G&0\.v ϥgy`[slX{ωUm{wu~ڱj|i业=i3%t/"D<pM嵥MLwJ-6u+`Xxw2)͸h2m'd'|O$MQd?<_.ącFxOvDoUI66tkmjy6ϔq%`a/0&'n7o~ڬݣ!tj]	j45R]'pٖ@!iusB4/CepLnŘ}
+h{T}ioJ~F ga+s>0|mykR>lKdhWLnH51|pL`OH!cv5չwg*͚!
+Ny5Qޮ6cV4GnU'THO;&5"]:Uy̮b\ԮzP#:ߝYyFђ{\|e5=w'~U*FTؔA?3VӃp`
+$"!}rtxy*<oqSMgWmoHίEBrj.ih^T^Ջhck(=klҤ=(wy5N;8h\##d$9 zo?шsa5
+5B/ZwɎMK#>ؚeJ(8|adA?lݒ8B,bVrzfA# cD~x5]f{_̎XIa{+CdD66T8Z8Y+9īdB&\%3.,պӼR9qɇݗТlB!7xJ[$gI<e@R 0l 1ɫ^oZuMyϕ{O/(ig!
+QkBs*a<]H(+OL)PAK eRx4ﰵv"(ӴͥH7lr`oW&?Fpv5<LWC[;/"(SɈ_ғˁՒLzT^4Oa/QHP-fj5%<XQi6ݪu)}Ϯe^O$s1ke8)E_wi4npvY{[Xk0
+^1ScK6"gO7~ͭ :j't_ʐƆ<w`f
+@zd	hOTp~rFXl;WviF+\[(5Ӳ!s6mP?0yhgOV{su[mٟ.Z+={M\
+URB-3#KAe?PiaWn#ϏӲ	Ր4|hIV@>'cpUM,o7obRܹ(u7:V˗w{<ȔK#D?
+BKp@(5^[$5;a؁Yv	"Bl9M3y{T"Iy=mr&|MBZSND9||aC|'p$v9?%w/X+RctDDݼ6_wZل|.e!#GrFn;٭:"i_ 4nP:W*of8WRxcO|٥iDBsRωY*UNA}ϫHs&B:5Xthl~-,pwQG ;,Ma}|lWGkH0YDZ'Jz,f[3H̺]i;ڮnlֲiGCMׄQTݱ/a)4;3'\%Nv(*kLW'ٵ}K#lKfǵ?:?tXo4+s<[xpا͠+07Mfn;d>omکQCɎ^>~S%m]CE>Xv5;7b#'woo' WmOH_1EIP+>mZ@
+mo&NY:tݙygf׿*t ℃gY"o=W)6gb3&d}{<kq<3dY^f>SqAo<;>u. E^ċRIX(8Oy0\^'oO!@dǲC XE'wBH52<d§tX8ˌƛS*3FVmXu&Fֆ(#pսP[lY|pXZ$1<mmc /Iө@4SdM RK].Ӏ\M=GfCmm>f	rX+5aK. X
+d<d-eZf!bH5`2ۃ7d6Os4O\\ۋd>g0~!&ӓpCBP4&FГ@j1u 0,,Y!̯нQpƒJ+HcE%t+7%䊺JqmUYz6kХk[Wl%I6W^DY6z"/N)Τ!}Olc!zK51j 5
+#}fR㎰P	PߟWy'i$XsVęEW-D|4vC4_=E<MAt6>e\]a8z}b>dKS&WW㘟f\3~h4Hj
+*əE!zHv+KJarGM5Գ)EIճ<XYznŋ_#hƊq[毫c㐫7i-^ ؀|}hg"ùXKǌv$ӧsL\ 1tGz<D==JjfʣV(aΑ	ɜ)9fqB\>yd,5NjqE]U3td}0eG =¾z:
+} eR/wht7Ի5jO5n,v%?bnkN]6VvϦFa@9덺Զ3åR
+MK**h[ȑ@x՜w8Bzg#`;Iz7
+GXW%8[YRV:7^Cp`LlYOVF֏v@^Zc5Bn4E~ysQqKc؛Yk^lv42_UKt]jEt K|yFZhyEUD[sƗ3jE*1UӟM}m_DߥuoU'ھ'HzJ;}V9q}"reD|_C5@\l{oeTn.|ʊ|6np_mڒX7}V)+ͬv)qiv^wXmo6_qR{eIIgu8mC@KE&UJ#˶le6mlw{g$nZpW")2!!pzY¯T($bZJx\&܇Tygt4+I WAINJTi,"X9r&]Fvpq	ZIH0׈JCښE $05!>9xE8IA%Dĸ-2ʍI|[u2Jk1CEH=)[T)d	/xh4v{5`3
+ˀ$M &i.3w{Wpteʈ'	11/hhkA(C bqtDt ac&FF?뷷s.Gp}]A$_Gp+kr-(+|m 8%1D <tO9jƵɆHLHH]-ϒsTQf!CևHszU ʳUc'QW8LLʸȼ)Uަ3faTar0[ZHQ0s
+
+&*VTĭ˗zBD&M;nAE{ĳRIkި$CgH>/0S?P/˝cYh5E81k%EiԗB wS*RFd1hJRP̸,p.iSNI@No>LHZWe҉V"No,JM;4ȔK>X`D@B71F8Ѣaw,xhYz
+V,"1;yA4?R%]H6, 	]e3bzrY	r1KpzN!QsHMr.w\H[:_sr	h)UQZcԔ4$
+i1PY3*ZUYEB*Xml@
+\FT80&
+Wd%?3`!}/MRZmf)Qnr9ZK0a72n1\&BJ
+}ŭ&%6AɛbٶM>榽*MyԤjjK0iKnkDA]T:1p|N6$ˈI9	=a&\V|QMIV%nT˹s[~x{FY.B:7%L1<fj׃Y`o\	T,]@`loBᙣJ+	7G
+󖷬hSXj66[؝jz!؜UQD&vNUN4_ @{/!	-x%e%OdԄ	6 ДFSRH~)`/wN"ZlCsZӛ[7{`><.:B&[7Yϗ2Y3c7cM&BՄ`,o{kiMknVB*L	proJk*7K1̙6ӧ_n)dys!j~/B'_n6גswK/ilX]9 }0)s<0ʫVbޙÊs-Jϵ&5<)X-]:WuF9ggTj@+Cl\ؔJbS i)DUwWQJJJ[Jh573A80,2Ja1u܌8\f,j_7a'(]^рV@MWuAB EraC8?#t[ZmnaCP"%%HE'arVzgdu[neMV,%]dl<%;RTfL7pH4꿎G>;PAc>]"Vե*ٽk/f?ll߆a۶3	ϴ)AbxN&r.U֒[_iDM2&hQ~ EkqUL9Cߦg$}?lG(8I
+(YpLULmQr͙l
+HQ) |o<-}lȌ䩢B5Trk-i<*PYNI۰%[w/hEӰ ߮_A\R~?__!/τ6\󈟍&+._҈dŧJ܉y$EJ{n lKƢ;쀧=
+}B'Aa;|>`|`h-K;VaoHίE>4*
+^U*؃]SͬR	;;3o޼*zE.`*D+'*#䝰ȦT5Yq )crb2Ae1Ϥ	}zaVpR+L'
+[(imDA,Q9;}b9AbT֏ 4tGZhi*9(@*:(=v4	rvFf(46[r)4mj+ꎌI/a@鬳_{R@iŇ+Gp	XYR{wsƯ]榁^؛ sի(jf,<6YJ>>U[P%bMXp} Ecq遴 J?@	ߣIMY</%|NM[^ϖŜ~Ma2ʞGDmeB*QL0Z>
+	ZdG㧢BSJ˭2%yyQYv}R[DyBH3Ȣț z~?
+ԉ&I)n &m70QQqLTM?jz~<`*ݛ[нz$ahAa{$!1b7`ulY"Ykαhީ.׼~B*w2pBϝ괣y;rxQxeDibzHymYh;IEQ>^	#\>wtPv20SEljxVI >x]N'/Gm<
+ms[wꋫ >l[tQjIn1-V%NODM;g羼c\^${Y(`?4ίB~Ro8jeѭCz܅'_7Jw/DjBhP$)%@EtQKt'w
+^.d H/[Le?"LB|=!6cʱTϏڠ6ڟy`$/VaoHίE}l4!*"LMOZŬb8~3^0`{o|y+8;k\CaB
+Ys?O3B7BcE]˂`,¯PL4+Uʘ$tU'נ$h!Sj,13.#Dsqi>@ȹM?#X!WE@%ψ*`Xf)2K5OIfڀ$Z7')'SnTYKiу0I:xN'6:c@Y]vEbY
+&#]b :ZRˀY)VcEژ]TUgp_$k$A>LyQ`)1,7rd%rMYE@ƊˤGх7AMy(y lN!4a矧_u8'(.|<+Nn)KP!$
+(~-uGb%"'%uϵLIhLkB)徣T4M} `mΒ  ]S-?edZh1_	f_?؉+f.ǧo	#}끝;f*!ԭ.pDphHI00-Ɠh6^ ޾oIK^2~q%أo[ߎiۜMng!6rg.#5,]gx4LdR^.@q9E9DRk|)|I*MjI>q.yIyIme=enQ93ͲZxGxv䱂Jby%'M>7R>828luԴ7cN@TOwɈoo:eZ#úU.>546Ke=8giɻEO;:Qoˇ\icV
+|4K.3av]E(ΚqV:)ڧI7o0L68m8WImtm-Jǡz{~j;umhGo[yzj}8oYr6}W`b;㚝>6m՗FXJEŞ<q`0  M_Ņd dsrvPXQCFT%eTQВV]q&yEW|]sFCmIR qs#KbA-oX8=Gx C[Śé3%#!Pe.!kl1AKZJkTqW2qD
+RbQPVu\)[F\:sFZbƅK o38NOO5 j$yAG9'wM+Yn]t[
+ylBA|{aoVJտ'I۶8|Et!&_ p*"%dgCqp^|p+h
+e ^2m-;%iH65:h$@ٷzbr]ͦדd6Oh<-L/y<:S&9]ceKJDbXSK+䱦ʈJjӃغ.ԉ:!M'9I0M	$1?JV: 臎ch$j[9D)/wn&%ӋcQ6<!| g@!x9)AZd/[Ll!wXS.6WUQ!{ MMآ)@b"BlȰF觘'\*c׽QPYid L<BD?ה/jI#>B͉l#"+0WLFszn	IM`kc-B#WotqE=^Ѭ6}ChZO!pGA=5DbQP6IJ`{ UH`-F@S"(Z [`|EG\HQr<~Y.4#Y7G2K|iIt Y	9
+[5H8߻a6>Ϥ&$6 
+P=jw5ȚkW=.lo7ܠzb>i3\Q(idf]4 `7<IoH3$ր>u,1\Y:"BQX!xfz]Bb;o*rLjb{[X*xkomfX&79֍JWKg4~Q;Q?$ރ ?烞{ajwaumJ{vmbH=fqII)<.(#ۥgpw)&73Y&WթM;^.s}!R* xRk !w=zluG?Xn#7}Wp?ȣ'"X	 Zulځ}x{KfdNnҳѻwg	#rŚ#Z&Ld&rMj=c&4[#81|b^fbID}L)JKERc_d$N#kؖ	Y(Ɂ{n6kꙬ@].9M<ZCPP5UKt3ALO92h8d])y/]nw^ҐLB;a/1KmӄS[i]~W"2B+D5(^F~HC֣ ;]AHրoW@h
+Vt&t +
+J@r
+ЂzyFmzzl2'>t>Gr0'S람?&a ^RNe'xuF׌))S[1\=XRim#|6ͥLǝghDk;]Fv)$vV%RLLYNB㸥"FJH-22C El$kse:3MA&&*a.cw7h^%,FeBK/ST ԁ(ϭ!{X@n2ξARq f!iP.['#*i *p	oII` rR=t)M+3r[ӓ&"KAi13ifpoZx5\h;~˘T,Fȳ!'I:\2fdv{DR֙1r.s/玷z1oĕwl8Kr԰SCꅏ]+*NϲʄK]evim\Yv=kΠsU#SJ?X1#\Ω~mѢ	_X)vP\
+hNVȼ< )o9p(AĆXibK=>v(Y-G.,.XEdT?'
+01Br!MH)vpp:xOąsg,l.γk))=t[mJؐKxkFg7f\>|Uq~4IQȒ[WpʗS@+b9G)fMXIy]~Xk},Q(uWmjJ3``2?)vi;iSd 36|V7/ep GopAzJQyuӫ^}085;0tNה2.Rȍ0&old}f8Cކ#f0\%>tq^A:a0{-^;?/BWw8<#ug
+./*%Cmxtn855rkz2n#>*rD$^|i2ߨ4r:&bs,$+U<%6OiQ>*vɢܮxWe1Wå
+4,`	K%o!KB&c~	bȯ-]9,3U2;/(vUcr̃+3TTIܙOl=]}_ 
+1HjDaycNj8h-0
+Ba1m`)dZ@9;q=jv~{|^WStΌjG/DUﶲU)Ik1V#7t\qĽj Oή;_kbqѺf")eۈDѬWyee<ꇆXc辝퍰d@!\'oOm]-nJɾ6kYUsHYZ^1zJ:|^OmuoP`i?t }.يBo7	zqNv(0}_AxTz}j6?A p}?Yo8'](>Ml9MQ,-6/8"I=-;-iEpyާh{>XH%D&KfVDW**ʅ6R%גjɢk= 2$#h1gFe#L*OYrȘJRUf,7"_fBEb􀱉~|;]ݰȋs-f{f=ģyd/$fbɳ9t0IDW2F[XurJEkg#Tol@D[(r-JL<G"5 .Ncɓv 7Dm*L-7H12&=7̀-^'xrs
+B{/I,kl<2T1ߠQ bœeڃh^DPG儍&r2h/Sr<L_1|.ߐuiJ-*<y-O:\K9_
+TO"HE]A9c-J#iK7%܏ET(><9пpHK>^}8$105<_l#׏ 'wyܤ<щ=l* `gd%L@Y#p_$"@(Xpmo[LE '	` 9m@.
+Aدx`CX6 ]LwpUؙ0oSRe@P4cرJ@_u@wXߒo}6X551Mc=<%1J=vGŧ)sOʉ|sfHAyǖmgk 	ɔgv1MKswM8_K8+dH\/^eMw,3TVk
+<*SҖ.򌯅A)(^cԸP.+\oVj>hw5V\GL%Ieȓ d<2NrN(a}:{cV֎O1}O9 J
+Z;dE>7O<sǅUG
+[qro""قe<=7#*qI·3H;p]J<dIt;y!IK:QvV
+S7^<6r*>VuZRm;"M4R1cN8JZ(NZJDlG.j*cs؍(MV¿Mv31];dDӑʠX"}]~|,e{2kعUDWo?̐uY_OOBH:+5-+%d <,vI# =W^luĂil%<?qd:WZv9SفpA+'jzz?B>aw.`gӫa^%O/`э5-XyϠ̍N/
+'NhRjT@_[*arcq a*S
+7nj!>XT0S3fGxPcB,P[eVyV\xahTɊ+`DY/5Aϝ`|M;mx
+x8QR5vlѪ)Q"Ŭ  mAf* Aش+x{Ej..}/h\v;¡GsȂn^A o~_~!Q`qmb~"p]T06r{%|Wm* Ѥ;o >/*QM:sX5{A`mU橭mzCզd'OS8oW@{>s(k$gۮtdⴳכpW@"9I^M	ݟ$ղU[}&Ah]JTƣHhgR'+C?mR>it49tݐ`Dc~ =gc/1AI#ā;zzIvNG}J(%rn'veZj
+>"`	u!K7&~.~G`2VU;)^:Pæ50C'mTbS
+Ay誰O]yU-L';𩛪s[|`;j} ?<;VplSc}dP͂\*?/73]W/G5ukrӅ.¡ڄaBiRu).Z-35Ze~0܇zwt/Y[o~2T8vudT8XJ"jZ^-p 3Cr6DY/_dt~~ٍTbLd1L\$SM$[c+#eȍ,yAJy'd"dF5W+Z'&Uή7}B3iZ.s[GZHL6dl..ۑ?ҬFfl[(U~ؐ!ȨEun*iSDl-Sз@W7ޘ
+jםʝ+]0#B;2^7|eXR:OHmX$ n]l	QKL!
+S*ckcҋh9<T:yG G0|HbeRC;S*K5[ %
+ jx;EPMS4o"^%qQjΦj>اjN]N<ݰ	OF'RaX-.OY*D9ԣ#aj302HCE!k7%o (uB8<J8TΣш^Fx~!TF'
+\Ǣ1]`AsPe`AL`?lB	dJr*b('
+jvCj7H0_ehY? <wBC/2D]]>ORJ"O$Ay,L xx&"cHNTAq,]E=yrj8[ܟ#Af8FCXeU4XB'CKuLbNM2¡T q	a-G*`އu6ljݩ7jf6ebi:ZS-b ]\ngv4_,_anH]eQE_|=A;]sۘA1~ȵ͘eDe#DӴd[ʳkgǯEPҸ;I8I9Līz,y۵Dl-M6u	_e;HX5Yȩesg8Fl2D VZm0|@&EhSMHE'Jrf
+Đ(!dܴLcC(̊#D2DIG+YxW +. E xՍ"Us*Zԃ)@UX,gRp !ͰU֤%PT',}_'`DGp}ڕlZ\'Qɰx5[I@{=srg\t[ivW͚qGC>Z)_©KeM"8=*v]lIZbnUiǢ@m+-~/ktjZQ{Ǖf@з^3K~,7->ggf~(B#[Q射[>)j ARfvy({4rGJ\'"|[DyM;<}Kr<^C3"*If!.X6'6zӊrQbm/ɤ<M_&.f'Cu6L-3mȎ+xtݗ=pz4QdlW&v8CM
+c1UGn1PfU;˃pEX#9F	}	 ׿)}QD:qAK@ۋ3N4Ic{#\۫c'Ba,6_.-īGZxiUYk/QΙ2t6!:YzqV~FW5ʞ!W(6JX) Z`ggy&\	0XZ	߿(jϿŁ `mwbIpw|@K]t*'_jRt[ye*A32-GoG5KYynO,WZ	rW<Ϊ*U-z|8<`=2e	1~\tێ%5r'"v̺#ұ=^Rk|MVi_o}݄c 4 ENmcjϠxOVm4vԏ^<6V4[\W'XYo7~`A Tѩ8
+RA`P+Jb"$׊jwk9*jo&=CrFb)傋51FؿZ&쯌iåxi"'2IXϗ4Kj"qB$Lh$FZA)L̎*Fd&O)"CnY"CHZ1e!!3Ƭ|rrJV/v|`pMvR]%G4!\[k2*j2+"w))蛣+`vZu/3JkAo_I)os˽{"!ft¾,5`.MNElw"IB+DdB6ƤGnRkP(8zNсH2 Ƌ=)Xؚf& )X[T-	 l(:,"gـ|8?'/.錜_|r>3r<NoA@*t,Q,)؀hy)XgtZ0eK%ej5VKǖ*Bp_(_ds)#e45G#*ק>Z1-3e15:Vۘ!Kfe $tX 7U[pB\wv;^KP	%k~ÄW4d+. -"Qk JA==&|)XPw }X_'`('޸/5>. U".y掎.O/W)y}%=pz-߽;Zh9 =f`q~ɖM9$\*}uC˭fdBIJsfBƎwG<~);@#$!%jyyù|a#@Ĩ1W|;6<ޔ
+ҶF'פn&`ǃ1J"H镊?$p@>n.z"cB#hhKDR2uAA\c4~`qp#
+X0>Z8&1h![y軗w/`	X\ l[5H[7G"ڤչYzT֤UӇG1) jfcd	gՕUYlzMcW]-EVm^O0^"4.x^',	%]/l0 nQL0GQta{.L{s++f<`N̪^g߽i}ku@8hIP@R؜ѷY6y}@͒8`4uP!8rKOq{ (YڝKr<("Oqؕg(eV]̔^KtɎ)lբQd#RPC2sDQx*g؉𡽑Ī2jY[سW}q@f`duUp;	-Z{fZ0"2{\BFQk Nt$t[}{9"GXyklK{Zms?E_e5G\FZ!fүΩ4J3gɴ=Gm״
+(lkRګyڑtm)]*j_مmSE綾ddW"հk0AQ%
+ZPaWq:[V0)3{+XGR7`9b	M;pGw~;W4e%:A].HdM?wo[l~&X4^q'mI~r4@GDZm9ӴGeO*Jw7B~ՄF+xpxI6
+{+wcRiD8#kN|om6WlžpmtEXmo9_*T!-)R	 rv{Y{~3c{ߒ gfe{]TH+˥*av)iet*-R7:gSssܘAMoe$1f<^5Ѕ1ƺӋ?Eδ(V:wr^id<ɅX	è~r94NXK3ҰίT8hL*"GP0	c=&2V"7K28X7ԢCs;1I)mYaDHdVY*HGW ?y%zedBazQ?ƸEih8\NtC÷98dޫTVr<0@H95V
+E  /9d\%}62UI.B6N5NxaOi}|?cON']^ɛl|9.J=3)S61TbFE\Sd2Ʌ <<,7">DKk౒@ePt+% רwL$^xП y2ң?_pH*bF9ajXX$rBH-֘Rj~h(MSO{	!xb%Fs +maPX,Ȧ5g:M0]F|b {^@1
+X2q>r@TisNr,RD`b|Ak$ qFk//W4@ V4-A-n§/PΉH\j0lt_'J0zOe~OAGKW>.R1H琍L+XWfІQ1XIAtiY90,>/$URs5	bSl[&8@PNN&%)\%=_jR?h*][psZ޸ *9,M#<ptrrκlƓ5x~+߽;ܟIcCS_0 &bz;hS;JmU )Z{(n~*)nP;{:HCv??Xo^dhYX18]kP52lwy5j3U(nrlf 4zK94$si
+}S	~XU]2󕰠//utKKf)  LqvJ(>[IiA݇rx@Ѳ^BH]BE. SviЭA)[אNc.Fghhz/PeL	 BIJT'UY%mۙ|E1Ory؆Zd.=X\6(21?"2sثK_H^D[~Ј"M_GPt,k?pK1ې@R0ʓ'>^yoGGvFwL*ڼ{EID\PuuHeG]g4V5ZZ$q@")톡5^m8JfEJM<;"%TGtسgWxS^ͦqyfm
+ߣ;F0LQ0 XVЏ@ǏYEQk@OV%gL	4g뱗;-:.y9eD E5td'0jM`h܋DQ%^jPD[~eڝ{=E6Ia@'ߟbW.ǂ6Md`D>)mwqU=QQgD|u3a0qĂ}pQ^iݙGbQw?ўCmWMݞ~%4jB4{y?XmoHίCUE"
+wؔ4i^t*UUUb/fz!\~3]H^P3<3W<m[*
+$; Ntbt,ΥJ'J:y/b
+3baLP7*!X1SXRduƂ|@'1BgLMs
+ADXKG=~`mξC0TA%łc&#xULdf*&܃1E`,ҹKe-kGFc Jyw9{/
+m!7&ElJ${5GDO 8гu3E\.{t}7h|A{wI,A*C+)
+bIB 2CƓKƋ`Li"n	Qxq^.|Nx7Ǘǣlpr1:N#tǣptR&(	DQc :TjL/rI̸KR-<ʲnB\M).~FݧCI3:XSp]v8k}ckG:HX6tE#91[3EY7r|ai,]IWz
+kEO5{@JΝ&^ˍ+q:Dz q/jI(g"m״\1 \%=dƐQ%so&uGiܺm^HEIGX.eb)9=gw¢d]08$nxw$(2U"եS.,*険(	&,"kM,0Gq+Me)6Rp3[ʊ!*,9٣̱rj1QiҖ-ɊV0VгTdb1x[ʳk;`Tƙ9*+HY\+<T <O?`ARcOh+~vJ׃I,L6xɐ55͌21=axP22!qbL7~n:őJY[x/߾r&Pp0@lvrhT6(V@F+&ӨeCx#΢9R2k*mry֖lm.cKJJHE
+ϫnAUd7]{\勇[ZI7UyՈi,VՅCV{>JB<$㰫-/I3Dc>**kִ yo"i/m;H7n=,+hçӻmxkCw)V@ A %rgq># q{-]
+(vd^90i3U/787|e*1J[TUid\]ew]u:Ty[#2Q|bz8T%ϗEmxǅ<h2#]7B޾h2^-x
+	X?fEQS-uW>R*6)m
+]ϛ0NԽ2W:f41FdKxa; !]hXP"BrN6r1@^~h?ݲ_jjϩ:F%_s{pe{ 'YqwAӏeKE{9o8ۏ|"WWFk6U$+W Xms6_udWާU'4ZKM'<I)%H).NLb}ؗgeGp
+7*0*T_/47|'51 ʗSH4C\F?#=K"p
+Z2JFXDXʥIfh<OzhZ%Q:BT" %BxJu|^26zcc,[iҮ3gіAHz'u:O4[F5PAV@b Ҧ $λzlpGb-zv0~F;_@3U1xUXS9P h:F6i0Ns&61.Gyr__`ܿWq8_7p9xO eŴ	TG崔Oʖ,N&)S10+sD2^*C5hcN*C*y'ZjeJ+0b+W۾<dHJ1Әs{丠Vʕ}$)d	?$Hm:])"B*Ot{l08&<3%ȣ|agpm+ 7`N	24/1i@[֝aK	x*gp=&'X3
+j%κqtMIoytB.|ഠ)\Uh8@qovh|zpv?ӓ<߃0؃qvx9&`L0rsĩs &؝kpgVf&$sz:,z=]n6)4N=J ƱT1,%ʠ(WFplDh{F,mڅdq /O澉[rٛ]r6_("Ƀ2~p5gL Q}XeOhJPq q24H(ص1<i`'Bi3БŲ૯dib}m' tqFz,4aմ|ݱOZ-VF19ً./fEYz"OӦPVQ5BN+L`r,c`[Y7eh2iK=ZZu2^TXsz6vE\oS,V%L9^(٠Ei[{qx4>4l)T2[6ݭ<H
+JL7,r)%2*۩e	Fܕ3bl?\Yo\s͓+
+זXFEY\PEi lxIi]R[_ٳ.[9ÿ/Q?ߜo_S[\[3.;ll-[	x${M-JN =(g{װcEX^}	I5bq,! `B?1|+!eZ|EOSe@l Yt\H**γܭ搤GleR+Qf:YC\&l{c yZ?ݼ8SBr^>W>|L_|{f1!ْj?kuD&{uA/B6mq" Ґ.͖mYEf ׻;;n5YWN'WM^kts{K]ӷvP0|X@a:XAηneKڜ)<]8<հׁ&	\}RT.&8҆_4p֗Z
+Oڱ8E%'ub4Ҳ]wi=M^ޒ&irVQhpϰ{2m;(W`T">Τx2A:,۳#/7r§	v8v^f~;vů&Ī	8.*{;Ȫ"Y-*o\z]#50/Ξ˛YQwnєЁ/_Vn6}W}*Mq58dDD$R%(E3#Rv.nօg̜3dξznT)!3.o%ٕΔrDi%[i!+sVeR;7"ßl|+\xe4c-	m,TvZ7_]Dڻ	@*%_ܭWװAϕpHU~kG`(R!9zgU`Z-۪󭨔&q]kݙ&rPuh07Gό89GHK%tP]9~A̚D.	M [$iv""%&Ez}#^9ߍD2FhIA,ZŘ.P}"E,pMFG1MWݯt.VpuW>t1Hlϵ"O%jʰ<]4P'iy*ji+HZ$sG<]mqJ.ݏ*ʘO)I"]I lCIsdޫR]7܋ϭi쪥pHPvMUI5y摺uGQc u^x!×tLOT9Z5'OYI)E9L./.I`%^n'G4p^{3gIbU(ji㼩B1Ur8z_2alVK&^*;3?K?18tìkkCao,Mk]fE"*uc^g+In}>e*h!ہ#"ߺY{0M3>!8맜FStE<$륿kt=Pk\p%nFB=>E/^Y`rl80e-)	QU{S0#D[}oXͧ,/Э;߳dKj\#pamsÐet_䂟|\+hGDZQ8Tn0}+VYMkYlh]Gcn*6YߵiR5!{ιE[AxvlDLH!KWJUcˮAiO[+^3cVtQ,*Z+U{3Q,ǝD'jPZihkw"R#f"6ְ'_3@/lEw^S)Vµf5I'KEYYPDm*RII73ڒփF)3գKApBh18;T:fKĚLrս cR@׀Yv<_1OxtNr6I􄹕5Cn&Xqךn~P> Ģ,mt4mH6gR|8]]}fpvQ;&qo(wqr$˨>ډ 9,OqNE.<YvD(#j-F7ZC$G#qпM[rIv?RReJq8&%D|ڂ[!a0WJq'IG#/TdEMN-m3ggUY]3+wvd@;[	wHaX3;գ~Jh*:>DPGVm4x&es*)
+'/;0`9Eq;<o>dQ;K\|~U_o6ק8nhkmr[Y&5;R-ِm&
+!0.(lN
+-+LTPRK*'ֆKYŴTPhH*YFTe
+a*3xk@
+RNAeV*DERD~X&P	:G Zn6tkhBAXs[Ud*3Y/7d+PRIu/Oڋ1R~5	o/.z F);ә]]q&2k>\[/9* 5`&81q۶C *@1~GKb>
+&l85jB5aXktF "E9:4Aߦh"Q_ ٘"Ia^I:Kima2fK[gbNߦ?g IFV!VQ{0n>3^色a%B)PaQjS{qMm7$֦crSQ(؝)xgՄ2VNu91S˕Cg78r>y?.Qi?Mőf=5mr!{>=n< NcTձd?g,W`=@`뷈õ33c400EP)?+kRwY39$?<HV'!!d{z"b''a[GER(98SY>|.B(g͚Fdη/_U7]DiR\>⺈>Xި[Ѣod/<=e0Ë7ti;7gsq8EQ\P9D/ߝT]O0}ϯ&L{	ȀjX+	mؙ{ݤtDBsνOEPh/V:@ohg
+Ll^g3](SxXfM`I*!鑚oEII:ZBiZUb", R@?LGg0'ϔ[H@(0'*e(M/ sa3.M*_x0Fl%vbܚ;.MZr݆ч"boa60~t);`H䒰*2[w3H]Kbf\F
+60 x`lwKJv^stZ+Kϖ *R%Ō
+B ug`L/uMFi>$(hqr=*OG)Ll2>MG1i4>Rdt>UMRŉbONBJ="G#0'R9.#G|h*ПS	Sc)q,sqwS5]eußPC#}Xohg3gd~݊U RhFJQՎZʝA78z}Er=5fO"1>Y_f˲}AŊCEnMk~hN0)k4jբG]U=Nye EJTKK{Z1	M?{Lx(vV?8ퟚ{G9NUQO0~ϯ8U<$at@hHirkؙ:ߝӔڄbw܏ a*KL+' B٩VVP)
+Nj22Ce1=vR^^VnT.I2}@MGȴqPvAџ$>lOaIK@+݊bV[XR*璏%HE'@09zmdr[ƮdM-dړ]XuM);UowJ%4FG]5(+LtXUṚ7m 7$:^p} VՇQԶm(<P"K.HYr~@{̕*ZRW#iA*)q-E !U1fMۦ'zTn &|d 'I:^|_-zry9-p:ŋx>)Lf7ƀ$"dE1Sρݲ铭1KQyhDP;4~:j4ZK$sG%7exLxTOsUz)Q$(g2!~+CV$5wjgs	xhѰ)IEuۤT?m]^$7dBAJ-Ʋ~Tݹ`>v{<`Q(:Tnl	{@vJ$iB7`DEBU1=RH`O'&wߒtQpeYnRr,y?~ХKĚ;bc>v䃻=Wg9g !s aDg^ڦ?@OȓxSUnF}WE,IXGBTa2	d.E3+RAj9s\fm BRIU _VVWQl+V~N9}9*8DAXV>\G'
+[9b1r:Aq)@',Ú!я tmFZBZT ];,){Ɓ˘Jc!-q붧rc_(Sq\;޻{PAkLp	XTR{N9CD <K3nƹf]M<զ'R6IoYUh-g+iڃhU.VW7 )	{ۡ	.tmH/H6k4Rq:qs_(y
+{[&,^&kQ	 IF1LJV~0pur-sVޡҠZYP{7r~2+awJ
+Ua
+fՄ2H~ġl"
+dUɒqy͊V<7ei	ھFNsECUp	;ѤP]ի?0wS'0~%\~<4v{Z>׫ZRJՠkEgӮ/`ݪ|Js`N7>Q>W\D?øU[EqRA޼c>0|ra/Īil=>lRYQd%j##fEc^1(OfCfxh(w긶ޚa<!8wߝT]k@|ׯXLbXIH,!O,k;d-=KPJigwfgn]Q #X!	*g6gR6ڸKZM;"GaY,@рVhmXM<fQ
+ѧ_x:-f|.GZv#-<ÖR<\Z T5b@
+ɚ,%Yd1q_tI9Q5c(K4gAv0J@i쀾DUu)<SV8>vI}᥀ޞpS ;0lv"<6EK勉d~N{̽*Z֏F &VR7 hu\cF~NmzoZOPۄh%'%q28O!ZeXaZ4^-##ZF6,J('si|5fr+3FޣQek-i<*PYׄ_R9UR֥GI	CA_
+Co{!ao*cAπE[[)^{:9ϕ(eNmAV
+<w`jP8R
+n8|Mو
+xJTtO=2`roo5F^˼;n6lyOOtQ&sgCqci58}W 7oTn0}W\iJxĖu-DLdL{tZbYZ&k7E x8>sykiSX+阐BVjJZrQ;$Y;'	b	N@\\JudwKG4$z2*sjĶst+b9@g"],aGT=#p5ze`GXY
+ߚ5 $)JvzBSKW#{,<%RTf_]vr.[v tODLA"j',H;yqsexߑY|EG̽lZrk'y= Ċ-qmX'@,zCjvNIM|7I3xHO&Ɋtzuv:$٣G~N YFpALw˳<|Z9Y\'yXPg4a%4VX?ZK$KG+\ߴ[rMv?R2J5q<$%B|܂BH%hH9F>3$VGlKf?ޡ,ûfO/{t!Tmk0_qAc۱6KfVݕ~*}ڒ'qb.QƲruQ{tVDH0.r0NRhYb(v6\5p{-yBc
+F:f	=")lD,h5zEREKTGoC"\!V("DW~2m)Gh)hJbiѬ.hrD,PaTj'+d+Pt^lD>%{tR;3f
+Yɟ04꾎&]=iZ9LtXUġ;u/g9) 6`O
+0>m}RA/1&gH[Q֯+xVmkZ5 h9.E	1S$dsΣ0]p7pU5`jHQT++r(~9nr5&<	yr\PQU\h5L=*n\SiK~,ruJ0E~
+ޟٿJ^?qՁg$"s#ҍ5r.5UF6LnVc0:MeMc<8KUמKJF禢tXPH/vhOLIv/ge꿀F	Ivk{͖Cw'n㑷|	1,a'}8E`r]| Tak0_qAc۱KfVݕ~*}vڒ&qӒb,+޻{Ojp4
+`s^!dRX%5>gS)0V|Xؔ)Ce<Ca0+=:R,G"20șCi̇@A
+thzOAUcgVj5ѧ_,x:x;|GZnR?BAXsWUԞj,ΝLڂljNJ2ɘ},iʦrkS"'Rs|LtX*DѝCx%+7>`^
+8uhX[°m	'Ra/1.{"cnEP~6\SW[`XelE\+ֺ	AyVSE9vhӛxLM) j3D	 DI.N.oSnnEXtx9D{/ƀ2*OJ;Ĕb~䧞sK7'0H(V"rB]sFkdN2~K.ݏ.UYG\n:!#(П[˄2Oך ˔|mxo/ΎT
+A*Yh&okhE~~/x	>T#RLr3;'׬gBQQP?.5FHwgfE@%m2{z:{D"owu;w`x3`\|~TQo0~W&`c;eiU*tU*x%6Mi6@4iHY[^Xxor)る
+L?Z6+R$F*,O9[_tذe9=Y)D,d3:)Тu:*!#J!P$.}MJbm蹩)kzRpY\@SvxU@kRJI6#}H<%{R&3YpL4c{@5;s]p&rԽ wCsR@0`f@mL{}QbpI17AɭCeĵak b+r\TKLjHO6z4|(Ym~ޤp^_q^j_Di鴁0ȯQ|$˨>ʊ :dFvZ>s^䉪cB%QhQDqJ[dM5U*eäP=RWhń<r.5Ê/4/gQ#لѿ
+aԉ7|_kE1}yh2CK@`?M"
+M<J^w{]FBىDx"],0''Ә槮³ygߝTQk0~8Ԅ,{L,MYIv[Thu$Oe}w,;}(eN&L`
+iJ+#o42n̝(TzDa­~I,2zFpp$
+Spƣ&skST0zFFc[
+VjGEDn]5}6+Ȉ7SU8"(UAcdJEJa\ؔ%KSLV{Uy	K=MKZOTwfLOpFu_Gs>h㠮-;7CY(Gw^ ]Rd0 +a4Lx3c^xH[]`U[?ke	DIB4\A_( ĢΧ&ʹ"Imh!GuG6bD7n$nm#G) YFGҲbQLsnT(U$y-r(TťdJqP7UпSrIv?qnc
+<v?G~_MH)àdoAeLķ>y?p}(
+.?f<|/sQnH0::0[P7EhhlALfaziVѰTw?dHo-.ўcχ10%hI-й{;>K_?Tn@#5UiՄ&vaɐF9.V]QTfo7otVmpQ#p%-RlFոmPr ^3cVsQ,*Z+U{3Q,ǝD5(44J;KPX֬ RD_>fDa腭0+ {*ŊB֬!DPctr(+M%Z9)f"cS[zP(ez4c	?aN-=aBgXLtXւIѣ~,r77`^
+0PY۞a+	.IbxC&0Fcȭq~ +rZMXҡMIQ
+q/QKo.JxvW:mBO{'K@ZSb*X4qpidZb/8ɓeJR=Ѣnq5Dx4PK۴%d+5TTcRQKaϧ-B*ӶE97zX}>ODZXi){ڿ"\5974͜duz3O(,ٱ?ml%!EEc&W)mժ@!Y-
+7L|lRd|bvJp%XN1e7^dQKp9Tak0_qAc۱KfVݕ~*}vڒ'u;N3,HzOݻz[{dDHB*
+[εjtJҠvk,dc`xJ̘2E`V;)=bNnU&AEZ!J#7r0* bDGp3>#]G:itF6i 9Q,|(A*Z,w띑ւf+k/a+r쉇kN#}18CWbJ[h|et&$K)Tн':?>Il|뺙pg`ѿF=07Ħjl%TbCZKq.( 3TqULMpkd MFAa</ASn:pjUt&*K;F~) §ڰ	R*Ӡϩ1Lɞ*ZQ M%!G%ky1K*Sh]:c)/Tև)x{fjBa򹷵bPB׌T}uNEǟcmߋ便BYT1={gs4v0`87<IpQ\	"'G97]3h[Qˬ_ݳn7J:#6=Kw
+e8:
+Ԑaٱbu`|_ϻTaO0_q&AQi}	ȀjP+ rkؙ4t}wnvB*Q{y(#!	-gzN+'L^r5)*8kDHkAZeQ<EZ!R#gbSDnCїL5̉=3i78"H=B3̩2Ga\Z/FYy	KG)KZWnn=bɟ60׾O=+PAmqW;LtXYRԣ[u3c[Dϸ m \)sI6M3P<$7$>&Nh-<@T*3Z;@,C|hۅ`M;:$}&|zQ_xa|%Fd|.q2N##'W@ʰb*Qqഴ}r.SZ^SR)Z"Q<J|,Ch1d3j+Ѻe0Un
+߳JA7퇘VԙO7R Gtc? 6}rj/vwBZ<Ve^Iz~sl/Zi!pyU*{^.
+GN	Piճa{
+#7y_bdfqCtQ2kBJ}'9itn$*4ʝ1/B3%J׶/]ZbT{A3Z 8?~U[oJ~JU m#"D''R{*̬/qJdy="8bJWZYpRk,P%g3G71w#[>ȸ1"r0]8=\AVG#чӫX|O@%ݚlJ{XQ($SaG0	3u52];ЕBcײ|MZ0ܦ%[]6Tz11WpJ4h^{\lAi}t@0%`yIbݰrƯM*T@f \[)sEVU5H4l),yA[O*CkI4r TXLT\A_( 2Jm&i/ZH6k4G0~M!|.>?-n<[Lo"|v=]L3zx=?NgC@RCa!(&~j1p4ur%cRޠcRɥZP{zčǄ_\֙4?E߯5!vǐtj
+aDT<.Olb`IS+JҲ4Y-ncV03ADX<v,ǀ&$|ÕAKuU^~؍k^pRK4K3(B^ڷ-8|JExz!܇2J`eҜ^Kj<X*8}M[:Mrx2INC*f|6*=oZ^-?uN ֳ7 @ڊk=H-}}dccϦNnrIˇ'bՆ`{Un@}WQ^bc6"J:6YjuRߙY{ۤhRx=s\c !	-wzN+':NҟKѝ5;)*8c+-0ҵʼ/>#
+[(i9mDA,Q9; H}t6>9gL֏ 4-FZhY&9(@*:(=v41TW7FKQhRVoTQ c!-quGeu'F.)S~;x{dNmo.(x+Lp	XYR{wr]="T@/6@P)sa7M3@<sRv&*ZRW-i<QT	k!/o BR\}	6t/ZH7H6k&0Nzi>|>Ob8^tr:zp='}@Rue!(f0ptur!SZ^SR)ZQ{	8&8T7_3q:%u*yoMH!(Pq.Z*aD4<.3OP05"in	zjN"BPa;T*{ҧn#u '.6\'n .܏\2זWKwtX/YG w;+QxA
+}$6
+VZfYU=ERZ4uנ,#PuQOVX= PhwYgy{2m!zui]+ھҧlB0ҏnx&7<<ܪ]p?Tn@}WPDpǤJB	-H(ObfЈb'TW$dyg3^/LdhTReV=ieuI
+V\)Ai1Y&,ഏ1,EBH/]-DW p<&]W42Z(1rQQ2wAd@  Bgx:Ò3>v#t+#-ڬaIDJN-r
+O3aRrcdrkƮdIbMZ2vMKZ7jn-bo.0|t<PAe5:w̥PG7^r&^pAx)@R +0z <6YJ?h|B[̍Zr[%y؀(U"55W7 9>mez5H/mר3`u0F}71x:`~jO3zpvOU,TTAL%;^?[:	SY%2L?SR)Z"R{=c.5j+:ǦSPPgПS5]R0hG@!ZX UoL<P-gP[-H&O}̽"D(F&,L`lI.Cb^nxw׃Ah(WL {dQd7ϼMwnlUFisgY-ΰT<<К9w\]IQh ;=	i@~H)Q =7QNp{ĳ@g 8~ TaO0_q&ALVZ\lС:Mhw.j/<qE@_D
+-K\ԆKkMnX)E[^tf)=b2-S3وYlH-TRm)(l-ۊrX0]"&SXoϸ@MA{VXQ)eJ*GLeVr*ya@.xM%VJ<mXҺM'eGugnġ+!4_:.3:txK>`N
+6`@aL}mʃ^bpI1עDɭWr&V)[גQn Eq-ZCۦWz$}w\aQ</acnëpDW0Y/$ZE~c@§ZYĔ[G1ۙOƔxJDް!\>jTHf47ni1/[KV"eݤQ[SkdHbh L	Gqh,IY+Ď)w LL%rqlגKKFm|D$l٣D~F0QZ;*C ŪCgBv"ޒՖw_O>Wh%Q[ܳn4jDjӅJjRswCPT9>=ءxANK)E.5fO9oygoTao0_qUA|[ZRiɘirkbvit$@L޻wwMtVBJZ&FUnP2QQ%Y>rstGi0<0jGcaZ3(] %ѡZ龺AgVh5sѧOYX(;|.L#%T,υ+*jO5LN-WN:ڔzF2O<%;RT͘J$c
+pp;99@*쀾D\rk!8y)a@ims]͙'<WGgl._s-+4zkgZ9@,:M̡864mHm{4R	|8M}\_gp]]EI/SX_b\YNmQr됟rH-Rh'
+Qie4Vp'z@WA]5D2Ce7mnMޥ*S򈋇aR(П[i)eD?(Hri!o܌2̀<IH+_bd߾4E.71$v2$j7>f5#{_IV}cX^'tiD>ٴr>}^PZ<vFӟB':z#rcK-vxQH<Yw1ə/<Tmo0ί8I-ii-E@jUT^;$-SmD1Yzp؃!U Bis!F;SG弛=J'K%Q;9Gb־anj	΀I2 }{Vb_DnKލP~Lք3@b{XS)e[Rt-fLWjkU`mTER;0n_kK\nnW*Ĕߏ1pR?8٥؂6j/U!e܃0޶E̊YS 䀘(jf,౱yQ.IE2{Kk]sZYxQ*)V;
+@(K|ٮC^D  M&I&N?/S\]Mi<K`y"N0Yrxq1$ɨ>VIRŊbv0O'WTk%k#m؍
+m[dFQ*q+nc:?I{.nUjL2I"Aӟpm{!Q[uޢf;x,iC$י-c ysj<h}x2vFԓ ~+B:{ro=h H!L-
+O.@cs@Ѭc'X"F%i7OT0R%!{]}m5<gQxV|ue pwG"?nBBH~l]wtyd"Y	GO7&apzOT]o@|XE<Uц4#)Uqw9n@^	"ή_ⳳ`!+\+/EL++\/ʼT;5لZuH25"K7aU4[=B큉ӋDikTM 2Đ>]6DthRtjDDQH.-*"X
+[\փnZXJɸC,i릓2P5c_(K~;y'Qw::}е؃/C.M%SwA$z.R@oa |{smND <Ѷ{5u6毉tU:GHK=^Ab5qD RU9f`hKz$}@m4$idcKV+LU2`yezeJOWc@j'cY1Q,si|rs9Se#JRІ51hkZG$Z0Ti5Kj#lunRX8=R8wg[-7օmט#v=jiU1Ϣ21;EiG(l$zs?>+^+B;ti>Xم|D%]"
+vZݻ8\M&`Ө<0yx/%jrr,xBjVE_GLXkLw:`ZB9.>D?T]k0}Ach	ݖ>پvڒ'q+NRFY :sjYy` @H0.r0KвEe?X߳F=yIН,tb	=B)E,NpzEREKT[ǵbXKF BD~f	dDS8"p;\C#3d)Y\AXjNdV<_@|N;2zKKZײnn=?>)]^׿p蒭AH}t@0%beUp&nr6m9) kLW)1չ7M3bH$y89#N5<*btr@,E|hѺk2M(ds5!|	Y8YuqCp{̣$-Y4[m
+"7C@RKbʭSvK[']a3<,G
+
+Uɵ-&)Gɍk*mGdՎU׫S|Q(|ߝwS	)uSn)3L#
+.hI]yiuL"wVօUwCEn7@4ԬcUۈJv-Z{I[ҠHnx
+8o c
+` 9)d{ݓ(Vev,#:݃Z	XIg{VuLUDKNsv+EqgzvYHoNv5@Ӻoiw2Axϻ UnF}WE,(ITGBTa2	d.E+3+R1 ^r̙/M5pY Z9!T9~MoeVɾRo)vG}Vbv0],^\ݢR##W1"  Ĉ>|L9	8g@#݆lF-)2ɩERуaG0לjodqndE.%^t`1pj-WuK>S .OpI4lnw)st@0%`eUHRVwA zKp] 6U hf"<6yЕ|$fx@w>T[ǫ=PbEXp} Ecqv"陴"7 ڄpCYc&/?%evw7pnч0	-`ݳaaHQ*|AH%3YOOVK'[a*2T^!;4~@*4ZK 3G)e׳xL{{ˡJ.] Ug%B
+)~lN$Ȣ9s:}HfE3+j21OXmϖi_/ -uukP:Tٹb4I Ok5(M MLS7ή
+(2EK*R87]xMR>N5B$^＞<6j`e>UH@Ua><Swu;xW>ƑF>H¨V[E{ttszmIV.8o޲}e$>oPMhͧ/+rwgE-޼6O%?H#qzLÞNFO'r
+È)Ey$:Fh1i9(wYޚa4ap{;=ks7+`*$-wU{rdG؉je)qmZՈRs8dm~moQ;[S3@4F7{~#W2|U%*[-Du̗jtJci*әr*|NI>n"jTYÓWCW)qb]n*xd"Yizr"IקG/^9gY ۬2Y)n⃘d6˰d)&Db.b="[\U"]EyS+LɀU׻|#bZHO& 
+`>ɝXؔ.ҏt]z%)Ֆm @K-PWD>!jw{{;II^,T~=>y9U_W˴,ak0Ɨw"YVp]&84QD m#Zv&3h
+E] -9H;:۷ǧG/ON^_߰_J?`ሦ3H-ru:ZlE*MZrXuVԖ:JMa? (N|I5 /ܓ}R5!D+MA4Zu\\A/D0MOņV(N2Sk,m)K<Uq\hp%0\vjB\&u$5bU5ؙUO1KNU$b~`ɺB`_(俛o?` 6>Ut$eˌpX'Erx|.!BV{M^;m? x<а`;l[Eo{\bY.<Y	27E>5)~( %_m#qd7KHE2ǿN?,lMCS4:	pWWINW3Z93f_QS,!ggjg<b<J _dP,).No7t"4Ή@+ H@ƀl-%&'	!\R\b`٘&)Қ{UؕnsWE^8;w@e_2b62rz%$m%NCkNW9Y%yUn^JF66Z7rD1wYʋVzW{qꗖ0K
+M[5nȥ6B4vS܎&7IqQ^EƟ!hРAYR҄(vÖP ~;; 0'f1%R5;b#h^Os	irCH<EV^H#%hXe )#rJ ΈZsY:O F&.k0Hպ~PYP+;J!M̔#?NHQgڇtx|J@bLS ;MCZo%H8~}>OY%PQXWfGǧB|SF Cu Y!
+A";r8ҏl6חiVN5 *=ǇD8OPPI	h+XA>W5"(Jj9DTLT...\}Ahiw,3JUT
+{5@I!ЙuݠYvN/`RO*FA]a!CBKW&6b/EP}p;z@6t@s*WhA-~a4ޥdB!+v(_nzv'.tllKq<$\B,V3t$et$̈:D
+ʟ`LLmQ NҪ==琡Bx|y rr_<U;jfϐ	8Űcfe5%@0>Zҿ41m{mZ:?*3ȁB
+,#K:Y/x@;Xx_)ͦb
+rM|b\/.H^i5`XEgq@~ICC0T@ߟ5<d^f>dQM	54EVƙ޸Nre x̋ 03@gHU,$_KfjrGP&h%dRfWD@SDnuj6+=E~}sj_HM
+'H@;ۋu|)Π:\N,ӕiV-
+B^VwAþY@;.)Ň#*;d*xC;qtւ`2t%ONrQEC_ٹ9Cwڝ^vBJ:sD2])ě,8UgdZٝ}D.rKFwf^벦]\V8G53+}3A5ڥc@KOgژXXjܟR@wdpj#_1,+2*Zy^;zxXb8-=0S3ik~FU'נMpqlp&fDtxGXUL6+z(>}1a-g|&ԑ~ףh7q.h=1{LmMp?_4 ڹK^$1~s8šbP\YwTᵫ(cy7[[94eU=>9uV*gO 
+,u=,~jZK'clH+lQJ4̠uxjx ,wrFa9[<NΈ^%7*2(T軌R,g1>?=>Oѯf݀*~P}A%V*-Kkܔpwg7rgɀ&8}gx߫a.^_.а?+LK):H}b$oGGKTH`pkz@20~(xІZa>@H4𽲱aIã?k][c2]ΝH-BtuwEhMσqW韶^B$Ct(ͻٸ^{Kp:[`	e\L*-uTڻ+R	gwb^`ݤŝ`#ǲo]e6s{e /%1H8e:GM\ۙc\Qk_-fI@-/ k
+8ܬB#;|8ed)v+`hUOERcm67'))B0[lg3ҶogZ[st}'u<[djT!A+X{iL7	K,v?	fӵ|KCOvʓ'Q9ZKDAGsuݟqw@1w=D̫&&qLMuCX7B3XceM͘&۴w
+0q^0.޻(lƆ㩰p	IPNULWdv:R0?[yĚ4H`V9w:PYHO;Skv~NVX[W<unNQQb[$KA%;s_1
+H eV%ƦMY`Z7D41l&g6ysƭϡ`Unó
+埧%aUa()zYQV&R]6.nB0D{Vy2_1|Ik2'euȩ۫-Hi5" >GZؙTB=9ф4'%o*:褔|	1}7\{IMnVoYmPpfR7TϨ5FNipɷMEv4G7eta(*&Kr+P,+jJ-gvDT&g$o>,Y	`m+Xjдi²mQoSn2Gna;.N^۳>Kr?-I~0rŵRwǊA8>9o>4Q,H>̆:j:8jS4d9|-VKrP+̣1ߤ(ڜrȝl<YVUAj#0Ik`xƒMXD
+"JTЮ^PH:O~&ZJ8KvytPCafhnC5 {OdXajkF(@3٧:t@V6J7z/W2WIrRY8_llPҏk:w-OHmu*?S79'O)k@~kd0uRSi涰_;4+7ׇ,fUYIɬv4!Wxz3 =Ή~+ˉZR`J/:ss[@_`b1qsCs$ēzj>tt[Tڶڶ25m@~]p*)T~
+Z9(ܐv:͠=vG}XSOR2C[loI0ml=쬿9MY:=72n/A%Zt̅|ƂSF7l9~i^.tsjKTT<*JCGpdYSrrgY+g`T4Uq%#ydֲu8HdŮ!blTqB,_DwOIU=<}}ґ9U@ڣZ6HbBogêA>*k8~=ZGRJ휂_PYfƒiENos<*Ne$*-NnJ#D6Cy*D|l;rji_~71$KucrY֙51gq?HF3Աn̴褏pSq{'E&MejꂫgU}Cv([v\B+<CQ]un%S_%(0׌52c3Z"wi8JXЂ |~gۜ+ ҧ4э0UͰm=PJY ]	)*?35;\G2׏	DF&&""t梮@SS%!4GLvۥZ2h+ԒU$Q^\ J٪+}:&琀I2* !ףW￡3@hv֜D`-+w̳zhб
+YDi>)iR^jbREVA:XW.>&1xoDrq_,|??"u}Tm{j%yU]Gd
+oz*hGЛo%feo4mh82DEStvgr"Urp3#Lw<HǪ
+P_t[t֎TjwŮ';QWĂ.%(pp%'>À*cΘF8u|쐋2ePClYv	`qR0`NcW}Ǚ-RT@PavIJbt۞)t3ͱjgp*𳯈3DV0ӡtȣ؞\vE%g#YFJQIp?"RWk̇2MdwHZt啷8aJJLo%Ε%dGJ>8BVӧSR^'bQ3SV5wgԽ^&w**uN]")s̩1R\TyUY%%1[?Yg(G6TC&+G*2ᑝ0|v@'72dWѹM 9]Rh/aaVkјF'IVV2zz7okX98#Fd\h"[dn7Pp$ΒjmXh+0FwѿoV]C#/u7zZEAzZ3OTCz?9=s26aGvTƘv=+;࡛$["7:+8zqL|/G~/"Ei*KHHkOn;212{>
+&Ecաmzp:]l>`^Txn7Z=5$~]BԈe{k"B~ !=hrGZ~G:YT\ǳLGwMNvI?L3l1ɶ
+ޠs\.:#9L_g1Pfv9ꣷcrFO6Eqõivl<;"=s*pӖ8[U.Ѭӫk_j_9[5nz*`> e3TqI*O,Y]WhǜG}45a`235ߏC?&0Q	x2sJȱ%6j4m	ȠfGnohYvK'یEyU" Dgp<z/{~8,8zLkXu
+)'u<ZvثZh5\>["VcQ;_ն6җ-qaܚ%^veƾhwѻcjL%'z6|ʖڼ<
+E%Qxa暹ÿg1VSr՜ϣIAMl $1OE!U_S}p '2@C&#5ϏZh\9_4
+9{:{@G\.i\AĠ\XoF* * QLy|"_f!d0v[=6}1DfVOo.^ci0~v"Ys`9>EzN㛤^GޯzmsX:oEXδ7>BؘI{.ūa#2zw@?6v<XW.cs 6곝-,mAQ0#1,n?[řqY
+lnfEh֊l1Peȥt#X<$A/<9o
+HO1BTOA2uLYYF.H{TmIhAD,il=I@'5&Z5BĚb_*R0j1+HxkTڇZ9woh]!_d)쬃ITU9ΫW=Skt8QKR<VʱeA3o>fH-A25u8T*.x5j->΁Ƒ0iᨓvN3y+ePԛC橥M|'(y3MǦ39C'za:_߾P|2C+ t+o "`u`D/cRz")k3ebor
+ӷ;[K?;1)簘â?2֑e)NȴWv\(֌RƳo԰6.'Xkb2I6E	*_LdP	f/]k*IVNM$,E7n财YߔL/5͌$v`*d
+UF<+53z-L6v$V+HND`ЩD}r6-|L>66ofiKm3dMAC}^`^Ue؀SJ	awb,uC:܊u5xؼW#-[i.D8Oơ.4f5EIUu?8Rapzh9-IxMEU0۟~)V.vu\;˾L	$w:/6hNBXx55=`Nmyx{yKI/?ARC2ob'X  `ξz F?oAօ{ɠZt{Qp1:mHnej=녺$>5_44}t|ک]G[4j"t٩ikfB".:r|ߦ|Hmg3@='/įCw^Fcj8,wRf6`3_T^pyNUN{Ocr][R6ʗ* EL{+tZwWaU8ym(uRZ%zXs\ݒ`W&[;M?!ٚk5,$L&a]?9.l1_j;bx5Arۘ*55x(Ac3xΉDfPGyɜxSlW<:j<|مaP,hL.p}k	G.reZH(޺Hco>ށ&&
+īX>W)+sJY)?*!5>#7^YĲޒsԁD*OQ1l5
+WGhByd8^}kLNTpyۅi(Q5.5bee+Jчnl㙐uda͋JB v^w%4\O֠JkՓ3yj X9	9+2tW,+=y՞>r$e|98Of/tc5KLb)%C~hBж\!244^g*f{hMo-2=vѦ^S%ɥ& Cmvq=A#x,ҾHE&yHe+5p=SPu@9lQEUG]/߇/?wАCHh
+VW-'~zb3иZTpNۏr2mgIu&ĺħijԀA:m?ܩ'2\4ҧmoi9=#<ǣI EfI}-?(>~!1ć,n;!lFXFZ,Y]˘W:;tJg%GnH)^pi2P4~UomI|cSbnZNH~g|%O]_b.rha(]4<Dy=g{DQWhMr9YKl&SC7(ЁXCKѪ¬v?vx%a()MK,H`ߔ N!gV
+xdDiވ	IEPK_c~;d/n Ӟ
+TӾh"^hoq^@EVEcG`&n=`w?@B|dm	}27o	Ú1^A$v^h1G !χ;[	QB8Ѐmc$5&'D|0s^u0/`2Ayψ|z鐑HLj/]l&63_f9R^G>qgl8x9N\5L[N:^ 57MAD`%RKQ.2 -ڱ&ǚBe\ɲ)H<7[o8RZiSIyYmo"Gί ++r]6&JjEV34azvǘ߯_lKIdcfze۟EzՀWp-bL4H_{(~6ϗ<L*ί"SSHeeL2Vt}g N2졙/"y9: #΍x
+f)OzJ+MT,q3>gٔd|AH12(keB	v`w4D!Z(@JMwyh/!W1FwѱeDFE=}	%	,I~ Zj0pGf+";]FoI̕B"C'k`)z	e$ Xex2o$T]C5#s4`{W#7f?L2<?
+BO>y-.O*员K9sHyR)c)!"ZlJ.{2ji,el4.S]#ټ5|!C<4&bJT|1!Dhdu:*	7		JSl"s]	"4pe@-x{֑VLO0ǡgA`MOB͖\{D?H9u> 2q=87`3GVO-m LSt hSJbȫ"ZP[sF$i/.|6_i&z;K0^0/ʹ䨿ŪΕFKnS[X^ΌdsZS>X&s#*w0r%I#5iM[JTK !Xkbf>Til#^XWec3Φ'm22I6VٖU##alo:O\muIڠsMˡ+h8^%~pd[+]i,4%-{V5Mw$yfWw`@iK&)5Ғ=004aOܦ9̘K-9Z촳9TgHc=dbumDYMHE3Hw`
+yt5p Q+k:e(m*|Kf]z|E5b_!<`_(?78fR۲3n
+טn\+{=K603reZ	7*ט-58e%p}*;4dꔑ#3eRxTeCdyCʙȸγ[j>
+fy&ECܫ4 qiޑVFZ*rӫ6 im׭Bނk97"]̓[fa^zɕ雈L)WyrSmq$q'̱M"bbaMacj5~S-n䋌jM<B|{.[ ăb
+U+ŏEūԱ6G	jW5 UtغnRGCilWϮ2_ qZQK9H|QA=A)T<rqq{MpeQ&5^޾ևty*wCj8=Ŀ6V,;n7=mB>\y)$Z#7 !O^
+49@LYv0b,*}Gv4elT=$R3n<G'=u*)ի]|'T^68z]Nk`Wre/SQbF^n܂be,*>ɅI̼^q306AˋsXZwQ:@
+sVГd_ɁAJPU<1e>|1mPZ[F55|OYmo6_tcu!vVEQ-sIx["˖Zl-swϑ/y?}"OO0.b挰?S)L@%	aIp)HR{ oxĄf112*F.d.bj:L)JKER9~HFBŘ5#d̘U?OFk'aפ@ciJT,*ƀ#-OB0<{e|Nq0.eCD_A]ҁ(wGϭ.䚭v̀"K9ѕ6w^b9.#Ԡ4#dnLvEѣTI?Ȏ s-R5{`<]W)-06Q B"颴EPM
+"^] Q`L6y=]v8zB|L.l8^ޡOY0LLa)GDY\VϓXg<DӄD2e#cj5V1ǂ[TEk.ypߠ*W)S+WJO(wVhӶJ,1-sek
+$p:@ˠ!⦲t(Br1&(E(v0E8`$2[܉RAf&LlHXPhSwȯۿ O7pE6}`[kfW
+
+;H-L3!3scfT@0@%@f4bH4MeABP:yP抉P7S<^@"h$F:p~z
+wQb3)]>X^l0#f٫ePw.8OGP=ݔMBs).HhGefda50ٹ(vE<B<fkOx\AڅI=0˧Ed NϹuS%^Z4'0ckAL|hh[~d>t,g/\@gԕx=0hb3؞i;ʔ4aU[-S#զ+>N_ChN~ſ`拶8J|,{ÚqAyMT1zsy|=</KK[{i$=-VlIF
+wȥJ<Z3vdQZ{샰
+.C0t=kOKoCіC[,P#al2U[?(j._ԅ*] PRc+Yo3 WR`Z}vFi.Q_aV|n{OΘ`XkXz5Ezފ,;99!"OƁP.]˲*!/1Yлj>"_oT7(]R+^+?rapf6O[lխA	9B|Uc9t@[b!bǗWgWgu<wDw
+:[whģM~wjj?e"zBRN-sӍ*95a'_R"~ľ˂Iu2]cwQUL~+X7M׾qm]}X~|\DRP f{F[nfJ."|*\V}>]b0͟2Rz^=ޝfpiPqz[sr-sp]
+j43w؍!(
++;A` [{=oq|63i?x3+5
+O+$Y]h
+;
+.ϸu2)%fh7/hѨ"jF,ox|/Vjk?|Q)f!_>|ojOnZSiOMܽo|Zs6q+)գ}qb9nb7N@$B:ow $;1Hb]9[/G/vFI0K?wIH\,<q9IDE,$Oɂ+5 H03&D|3NK.HaVHgU"2fH>_H!V"NՀDfrAv?lt	cBŶ@f!cx"Ap˔%[P-5*K+҄-[!Ɍ*1z *|:0 'V5^')˔ȩ3{ )Qf7C$2Nd^x?c4]vIA"CgB9H(oJ5H)- -9 H`x:AqrYA 05jո~8_{׫O7&Řܲw7&W7pwίÙ~cLkJ!ZT
+de@o1"a ŋ/[$!i\
+V3pUS)Z`OHID4xp|1+_]~H$TI򩡍v%sp'*GXTUTXdER)3D6W<py2V'S!<`+	.el
+Db[fã+peia"'i޸?+^/fڿo7\	wCklÎC|L\b[tX"܈ذT]sWeh_nJ,hQ>~D"N|֥ڂxclSg|X1YP+$thVYP¥eM0DLf6dOj$Z7wZdP>"d%WDaDQ-IqRM
+07DctT~=oI$Z&2F	J=oKo0jc31%\1M'WCGmGS{y8Z6dAοâL&[B$DEѡ30BBrGJY H;20NS4MXTh%7Me 3M֣FjT买;2DS@]g|.$#\'ڗ	waUKtYPl(K)R&b\d!(wf@W"j73o$4AxxaD['+ tf/R>͍<!dzaw}VYwKIaY+*qŏD-(YZǆRP\@;48VkB2DU6+ArvW+vMl|~kuDb#	rWQ6Mn
+PXF7T%^tKTf73cZ|,k1!FS6Ex,`*Y|j.ظ[K8f:]̥ !kt^DFB	h9خ'/Sф)vMƴ=kQY`"eIC%L_$.2K6
+7XMO[ :3=d*OS}a5W֣KG)Dej 2&E(0U	n)u;t6/mRJi8[MQ5WzN.-A&՜kEvc>IO_S]{w(:3!^Pwxů#o]f
+E=,KNR@hPH:3` $2)9x?ds-!]`cn(H5/~a"X @ɦ8zpDt`!)iL-!hPL#?8\4aLX#|>`ŏUPaP1(5mWНALȎGrZDpڄy:>
+O9zС@ǎ>k.7NSKȐͯxkxT@U_T+]\.2,Gp֟wj9lA	TL=N7UJq_zd
+VcIy^9)GbK]i*΍ij}]W;¹Ob-x Ac y75jUcÅSa]
+tHON&9*5"k
+fTzky:}VTw=͸g7$'Yݪ̸&kQ9ؑ:Cw"GnIV6ƣv8D%/O\&)BЀǸ%86j7 v[
+ZR uW쪇_'|ЦntR	+xb!T*QΤeSR`l$ڪvKٖ~d]`oonjW:tyٿ,<{gJaǰdCCGި&u|%'t*8h?YGpҭa΢i;jz OX*-))6{z gaS}V(7򅨯^XJŊ"GLĦ%Jǯlyvda:yG(OkysanӽM
+lk	KF*S
+T.*p[%d?)L}Nq|q])m~FT&<P:-;_q"C@\+䰃龃+o]9oS{'V5/`\&aO(!e|٪[ŦQK)l\X6|t\ates-5uaT *g3Un!e
+ԀE.خTT|fl2SX\#W\7I88hc6DWw9m2=}P_e#!V'HDU>V\\{})Fs'#V?L
+αX/x.Ի˭@s2^:㊰Б[}k2Y}[ZS/lXLUm9 ! f	?EC?U)hﾃ4
+s@gW(wgRN͙ÛCЅWmwuړu&g:^^ظBL/<F-3tS2*%<(b**!oHglJ{*1H`+X /zgV|YQWīd/ĸ'0-¥:i}!)H4LY$zH?j |:ؕ9l"ӛ`H@SO &6
+ztvgVUj*^
+֜Y<6;؝ ]aZr5TWݿ;6i^<~GV5W&j:
+ꉔ^ޣYQŒjeؘߔyRn1O;CA͗a|K5s3ܯP	H4pv@>glטlO̦{;mjbFGks6vF~T$n\5ב3NP"$L:KowH;m#7v`Zϟ]r6ͳ2J$rM<236M#!0!~J<<feNOWwuTp.8"wG~G`˼Kɤ*E*1h^pY)]rNW7glt"|	rsyqf*RdbI `Q#|)d:X$+X
+Y|^xbZ	~Dwo!L@}5􂠗цey*v?Lr*MlJЊz7$XD|fOcQ/c\zݏ~^O 1a~R.HUR'i4Zh$E ${-j2B$[D:?d}~]xt|5:djt>_7h8V2&(Q[i@kQz+>MfU4laŋe"P<IIF% D<*Sx},e0`|0!	%ȫlj|/>-Py8%&8oĢI^`a e @0VU2h
+G?6R~cE2]i	0é88'R*YKYaXҰ@3iђ+GhA1AR$U)-$Id#h*ɻk'z*r0rs\(fh3ȋR:\{ڗP`vpX$ͳy`%`52%{VnVEKVZ𾶦w|Ui5^z|>>U"`z.P'h|uh;O3ŕbb	jCo](si4cDpQ]6yĀg#Ezhjz,)ixJnRѐ@ Ývs^-d<Pɞ-4YH98CQŢOѴDB5_zꂧ+0Q=+~*6(*iuą;m0M ⇬s SPutr@ R~%ڞ$Ղ>Ad^lZpd"x)]K&[i4x$e%J76[k^UQeA%GLw<JPA/{z?[F0	MZP2ؓ_9}Ctb"Oc-S_܊hs(=%#5a@bFfŞ[␯eh.EZ/x0. Hc6z69C{uRlDlNV>LӊlJqJv'﨏w`{)"dɲ/;j~g1%X[Dj<^@m0F$&lԤ&h%yI艊[	zQEW2LDK+kPf5-,M"ɦ+ q}ktW{iqD>er6vF& MC-TXT OԿ2 r{!<=U0Zb`o	lRTtdF[.RWDbUXcM{ѱl,Ks<;R,ey{-*UEA8']'哬!}HVU
+ȩۤ	jTUq	^Y@I7MwvmzP-I,־ںe>;mX{cwJsIj̛VN u|e.hzz	5Q:$_x roc m^NsdOA4E3y0""NH@H]$Z#\D:ڈmڷ+V}ZDkt~q
+>A1"Ea͠V`;ZG~$}].|vX
+hB8n<IKITQFڃ#g(U6((J.czNz1)q} 28TKã	;]ҼES:ٓu$JS{*yt! -\Dt%)z.qze^TDNa`KVuitxn})0ʼV? Az|5e˼lXR)>Og!9Dڴ.CyY[Od",P"H|;2P+kltt=0gfS魣rS{30T\J2z'qP|׎'8\f`: DBw30|T	9^Ք|5w-C7H
+z34%^	 vdvH	kNd X7 lfZF~^MVM;ڹH]pǪ`(yA"WԂoDצ`U9#ņTw8xR誰T!Pfggf7}e	 o'&y&Ev#q `?VɅI^VEn$4K:˜4 1^ئqV(џ@H^8 wpMm_/hG
+zV.D0ԪS =}K[	T)[4fy' cmVѬ 8GxZKbvYQ&C&m[,ߺ
+>СZYX΄
+s}Hcu$t"!\tf[WQRN;qsԺͳ2_-^['uNSkT|P:u<i q̬LN&i*>AxouMW3lK/%TVMVJK^Wwi&mg6-)?z?DPs<d
+:ui6ڎo]c5l5nSu0ȶ+[Rmi!M:lr֐Az[u4u'+3ijc嵌R25McǏ2ߥ1ݳH%al/_.R|Ue7ORx,fՀumU跭P1V)jY_2(/QXAs'OdVu"gAc]6K_\X"ϓ)okdH#(FL	jPO#OۊVY<4n)LeO_bKp}k6A	uTa޶s7|#ڗ&/T
+&. 'O;{}=
+mIs˸o2u?yzh ă98Ϸr+!Eh>Q|\\x=J6UK? m㼤n(j'%>4r%8,]}ۀ}075N<g"Iu(˖H?Ƌ-6ڸW֓]>A_f2Eb
+=)nvڀ#DU|6ɣ|31§t0Hw.{i~m WIsx3	PŇ,o|(Bdꪜ1y;hglLܵW硲@	K3Q\q<*jlRNeӔ3>[xp6<GV-'bK"zoKk~
+ߓ9=.XVv~)O̍\*_*;mٕbj]ޗKG^%Zj wm $oY3#xւ*'+<Nn3bsfĐ]ړ:T ՐvљE+eЃ7w8٨MkXX㜫ͷHַʙsEyFeiyOcǿ>C9~9hf`P>p'67&Vnwk $:.u^ߍiVSzV%(?DV'?Gdv73hWnF}WLY*NF2`)
+ewb&ޙ]ީk(a[wngۋx_>p/B0+JFZ|jX3口81s
+T'#}0jbT.M{#d+'mʅ"!,Pyd `ʹ5?y_&}_h¬PFhH K4|_kB {2*4JDfez-b$RA%s4D] j"i Ѽcb`8,v1ˌrYfH~Vφ4M<*1뼉B5fD(b,ƨ<XCRm,0TaƣO:'ALezU l.GSO/t<쏇73x;z|Mf)<<«x6~{Mޑm8]"r§<bKV'sO, a@nsJ1HƒJj[%/1TY3)Cr1e8d ΂pzК$i(˩a>F۞ŊĬV>9<^abmS9i k#yTXFbs89Q\s*dV 6<]e;L>i6t$M$6Q	f~sEɔ<@n5<*A,`KЍ-knY1=cº؄*妊a6#)J}E#"MHX1֨ض@@_`]a5i6'v.dh.B_cIɼ-LjQtvy5U"'z+E32FcXhV2	Vf#}h<j21룑E?1
+qf,5S:co>e`$8G9iZ%iC~'",ȳ6YXtבrO=kč	ppЭ&),n^__Q駟c,i߫f"Sn/z1V&^TAvvkRvc_ω]ݜIU2{ukU7ĳp3?l-,V-R>eIʝVW^Ԡlb*t'J\݈łr\ǨAJdג&M\>;RYJ`As*AB<,lrGiG3IE9籿N6*ZcR9ę7mFv=?L=tL*@jJ}i":fmޝ1_T=@HqO̴Uzz+MnHmX߳@,n	z5>}oi|)^lR?1G qxdw0qÆ)px/E_0Lʝ`*5ݳa\IO\1Oϲf·/笟*7ovB8k;DDŰHjɫq[:e+ܶo-_ɋWMo6W=$*zmq]@$ӂ2kTIʊw{5R87oҿ~ y~ VVNH%Un+.ZB C)(>J5+pk	'hڴ(ڌ rXrv0G駳V3i8H5BVJdEAEp\Lu32_;ЍBcײ\6m-պu(Wu cKe3:=KR%`eUHR _B䖁^p kI4Hx#m$|&ftWZKlSKC/w *B%a-D !U>hEoӞJ/ ڄx1OCx,/q|w7.&7slz=YLfSzG5^2
+*ERɌbSj	}r%S*OrE=Q)Z<J鼨,]rIto8UpBG\nRDsTIG&BJ'ÄT8@c20yZyb^,
+^"aO1Sqjs4[$6h I60ZOh$#He9E
+7UbGOՐ$MGzNQnuBn[2Qyy|CD$Ba˿1e%%fU/vUBre.xrabǉuȃ&6qu	Bd@d^\K\ԵCqXk$?f'qP"$ʯMCZJi3toj1t?/~	]f_ROk`e$6iU@U/氪Uϯ_٣ԩ;?s6@ExPSde]ESiG)u2
+(ECXQ'qcK.LVYa^ka8GB%G?9|uA[m_$f</yhc=h_AHڷ㕷G(p)p#vo<:=8;3O/6 aBrtq'kSZj:++y`Yt۫N::b%w8j$:15;㙎xvts}s=]qy~P+>ݺ|T-΢5]Ր~'L0V*ܴ3Ok&ܴHOkMBWt<~UaoFίED^;5HT-lcﺻ8vw"yof]=JGtNWdJ	Jm
+
+;&#ے/*mqJ`i*	b%Zl<gl*cm*tePmNWgh V;m$Ey@$U8M5s_,7 -8huZ@9TiIJU$"2ћztd[t|pZ1; wtt{r>FWjOj<??\.2i9Sb;RQ
+ !څP$mNT$<Hz5*XހtskJ5I`-F ֡KME)BML4_O|=tִ\rq9̗|D2_\Q2ډ^(gGsikNuS3E
+>UKk=HfJ8T^B_h]~Vk񱛔$QM{g_B@&`1(ŁBT(^_e%a|yǌaV)9 [fTm0p&lV_Ōz~O苈:ҶޤJ,lo_k0oon"滗+郻ȦO vqJ?Wt7h)"7h$?gL@l17&;>ҝ}YfCGEkma6FeagplP+}opdEˮ=؞17W)^
+1de:aԩU{?pK)/M.A+M [}.ñJ]7e\cJDv={(;g=,J	sy. <:m$rhC o<" (k4oYmo6_q(
+4.\{6flH]O-2QHʮ7HJFZ=wUu6~µ*%dF{whgJ9Ue
+o,(]LP42T"?3[a%\Z+|2 ~$V-j2Q 
++ZjF 3)Y|,79U~g`D+2-J,T;E/JUhoN̮'ѕ1C?~s<@BG,;CdLV"uU*356㇨,(} 01?Ջxݎ[?077tyKFZYbBTX Rl)(& Z.$	ij 69z4t~̦!}7o'7ܾW7~}zzCʒ^;|J-1OZE-
+	HQIVRdX+Ϥr$zǷT%?c?XYscJy2dtx̯R!c<dD1gj˜60MUqXaCJAsJm1$&_:OD%!KXsInze<)ԟl=_QFHˡW"ˈUϏ淯o)dj뀥<'DwfeU[µ==
+F[߯Ǿ5psF8Oy
+DH?r(:l<j#5<V1A2ZC1Y:H|M=0xyw/zAҫ\!\hZ;>'_I{Kaa0ʚ#0`FQX	,͖x|t\^5x/<}>Ʌ[ǥAZՓ{!䲒G^t1s%rIbj{~:Ɛc"~jc=>=}}٦qEVЏZ!u2YDd nWAcb82nbꓺDyPy'/!u0{RZG[NkCVPhQLh2ipߴ)5u
+c6E!"Wќ/ͯd;pP`iiS52hP~Gr4,NޓG+1Qܧ7qTWL!Hk[#>C&^<sqG#zbqQwp𑤭gVֹo-p+	\Šxs4*ݓ),tdd~%,EIZpK5f!D |@`c#t!Wbf4>1ؑǼCfxc)p0v-8WύHSu1s7byn1I|¸/w|銍PMcC<\kX>lU3jL2r|<|xrFݩ
+}q!q:w}{j>i~׉!5v;ܙgAiqѵ?ԧLi
+7Ȝh'E<N7^<
+/4jvrS¶6NC}6Try?jR{l!<<M>mzwř`,Lv52::2?޵xa iSue9l~osNSsRƝ[w'14V5A wIl~)9S)G.mT]䭽,qADSGZbxE!0R6ʝ/TMo8W=mIkۢGZID$%)nJ]-|4fVE(B*j~)nrL޿,h+QR9,P9,됙Qп\W~a{ER++Z
+9*vڎܢ+-bʻ%@ʯ7*tco(F:}JZ~NX[2BuA
+k~["7mA3֓xO0 N^_N@iSuOp	XgZ)T'vTDxt yxo^&0K /H1yKʮ:S-:Gj}%wPbGX[1à`IqU/8E$ZHH6ftWwg>d6!}xH>nw6۬
+G7[- I2je^V3?EiN`!+Y=UFmGdIr%oHG.5mV6dONIAN+l1{<ť2HxǕwlВG{q"Tѣl|4H=^ybL0NXغo@2DQ{~n6gpg'	HdgѴʓr#4.~n>5e}q0nyPQEiSLotAor$u}~Í"\gq.%VRH,gjt8cpJ:LFVB#;$f*)n_[э' "|GӘ^GX'bWqr詗ǘ9<f}Tao0_q꧶*#makE6\SklgYAw Rd%;\: %BRIU#J+Kŭ(e.6 C	%>-޹VnAV0h6#QvAB AW4Z3>V=Zm`GDK>ZD>T9b@
+˚KYJخp,i=覗r7cT%1m`Шw49J@iO֎.PGgr@x)w@8Fw~m΅'<צGrv,^sJHCo jb-q-E !U1cBpڦg$t&|FQq2wQ'3&Z"֫8+z[Bgxu=$(|iidkNf$O(
+H[kdNE0%dG+պ>)a((0߇))T2&O SǱJAVuC?-_.|rr{sig-(o
+t]a8v-ǕRW04ƣ;䘣:oJЯuQ
+tf<9Apq TQk0~8.{\ڬmYIXž8Jr]oN(8ݧNΚ]%I
+!	*G~~m:ե.oE%qJs-sTpCӒAVQ*Ah@h@+lB0rDikTN2DXӋ+y/NH6%(QD0uYN;ykǒ^#C1NX[Q 'x|kуZtGtXTRg^ pAx)a gsy$]M'<զL*Ȯs*JC5 bqD m0qEIq Mų,O,N.]^ެnZ*
+.t.63@*ύa^(G~
+-Clʜ䩲%B!irk-,tTSPx|$U0ٿLHI&?3LL$
+=O a%<2y%uk՗D/+.|v
+{GD3o+t.;ZGshjVβe7ޝM%r,Q1|{4ػ"V}(@ ɶ
+s2t΍m<įM!CUo]n3<FcVn8}W<$cu]`-"r["%Z&"ZD[Hd3gm*<s9$JZ&%WJkr
++;$93d^$\Uh\Zڊi)#C8Ƿg_%9Y+kZ,J/#LsҚ>@̹s?'W7,٧vvg0JX+Bk5ϘN0t"[YPڬDJ|ڱnT٤uCF>#J+8d6٥^He4|Spغnkc /sZfɚ V>sJgO1zNm>ʜl]
+/6
+DbYEtr@Fe#kE[-i"{ icF8I»q<{y2cqww|rf|2[O埓u8RS)	D*Qc 4u2OR$Jq#גRpƸ6`2Eyu2dw~ WMC͕ʝQJ1TrgY-^й$UZS#$LQ.?1ݎwGҚWΨ
+ٲ'5_Eٶw~@'uwzۗ{/'
+jVMIdL>ɛ9iÇ:vlsZ7OϚ{"'9'EaIC<B%+s'ZC:!<w{g8dٺ-ՔqӿfVKvk)GlǼbWZUm<m߸Yn¯>.7ސ4YzdSe-؆#"qXm$I7uL\{>C6k)}o5`͒5J0VYh%zVi'8XA:ɹ|mHr% +_礥_AXcBpUHpfx|m[a2tcoIjQأՑ6	]k+tk's Wmo6_q0RR۾%uZI0cnb+ZdT)Jrd;݊}(0"swg*;pW"0,
+^L˄ʳBDƳA´$	4H+8Y̚)WBFϯ\8IKTκi+S= snOgKevrZR}U0d% 2ZGHP񘩐dQ"^+9[P(+vYu#2F%'Q?@PϬt6Ivwy"XX2T"9`6Q0C2&?YRC";_>F̛,Z#ZB!
+}Mؚ2he	^"'$=	iA.b90wx>ٛ~=.&sd1M
+$dzq!CS.Wz*Q6} y9D$/s-W4rR-HTK*M|<G?R&Vmɔ!c;CvV%QLBYN;`]u Igs2J"f{;!}%r!GB=)uj۷NP8p^ہYToy"S*b=>x+Y$!8[H4ա߲D`pnm7-O9M&/G#X9>(&B[9VZǖgFd|]qW.@7܌q"c"%SՉ"bm +3UG!$@qр-B򢜅77^Q5+i$N
+^!vL:GJɵ+_)Jcv~MpXPC0P~>=I?hpU
+#%h)쟼63Ruϑjt;G%``"l^>b"londlV:G>짎8t]p[MC#^'`%%Բg4ۏՇzH;LS8,Y`dkcW]8Wׯ5c"[VpJ^xɻ6|W񴙲/w	-cj9SՊj(j?t*k,[W{kس͔k{j#P[q:}4Xyl(-o\{-0 b	XlǩCn?	mBQzջ\|Rtwn__Z_Hg;oo;t_j= R0qB~׈_&ֶG̅L}R j/;WmoH_1WU4BRPZ]t(9 BE{f^Wg	b{}y}:fqF"PZT'2ڙTs徟y¹j;IdްR'υpcrRzgp |m,̌-<[5=H +LjZ )|?^]%XB+?E`n-LДcEE
+JBV&ƔidUԃkiTeoHnB00bd]	uu q3 m<N.d1\lJ舵*҈S@p*`&b <i?i=[nCwX9t>T:;Wk<^0H1T̩( F1Xq4IiY"*eܣ xtM0O;az p>@46AbЕ,%*Wb }rDENrHH̝<31c<ʑVnaJ.ܷd1)k\ޕHi?A0Ooc8d1gr˘j#_6yJÔ3_jֹ`H(.f,1|햩u[5Xm@Py82S~NɴsJOmѥ$(J U{lg	d yy	B4] qb T3?ODSaExX8	8'걜<&K"4e˥Ո6#yϭr3?7ҘV`@.ö]+ oy`-p|]Vt/8KFi\קk,BD|i3L6PŎ7H`sG0BҨ0ť8:B8kgbQ'L˸!!4s%*IVÝQF~jͼ*e{m;NpRw"+
+=!̓0'tUcdG<?cr+Cm1Lrht,QCҰ:w}sxqB,{rX+&RD=K5zqYy
+ <{E)}9
+hTˤHh?=]-ΊCu'S'XH\%P Pp~T@m	sF]bNNwq5F8u8XoAl>t1~d@~חOϻ}~*j4k2$P,[V\|]	hqٲ^`0(ʕZLEwRK%?HQKsuC1p%Ow,yqd!cU/^ɓY;̻vgwV	GQwd}k(">$I3#_?UV4{vGvj\SH<L/XmOH_1H\HRuP(%jtU^UU^'+lϻ(fv8\iK;<e2OZP<k&b@9S+w\)K-%x!SVx<V-I<5Ya(g'W9i"Zf_"0#kpn̏/Fg`̤e0\9L/!@Sf!_D&RL>d\cH2`5bT.G4D)?6
+R8m<7[@,5d/x1\,JBbhٕ>0υ93b4i\`y2\xrA;qGDOcS5d9U4 Fx<둶rMP-4"^@ؘQdI^LF|]9pN޿?_&pNǯG1~3i9GN)RArO.ꖢN*ų8Ol$<RfXc{DBRcLSu!eh4Nv۝svWbJfAQD`S<d1EW-y<I\#
+jꪦ_7U|fN*I*j j}tR!-4.iBό1lQ7{Q?jSlCW&ۺ7{ѣϕCbc؁k^611XwdB%!	wpo0/<_Psb 70Ï)W"ְ|HcoQF"ǔFD8BLn"nit4O=E,y*;uOMr:~Ë
+xl("TJ2\fP6ki*+|ԁR""Y%wu嬼u[z!'Ÿ8h(Xq@Bs,v"IHgYh|)X*XP®	
+c!TxMWat"phew̝7T~WLuբ1m=jl%!q[l\bbtT[(wE"WR|ItpJ:0V_::u;{w'AUղĎ+<%92Wkzn([?@B4~ЭrP \2u#kьs[hsgl)g=sP5Km937swlnP{2}sYG,i,ΗK9($/,5lW#qMa]&_o>ׁl7T$}S\o z)pa 5Y.AAr,O(PfH6xZ)="@ f]bwi8 ֌{L^̛;^13l҈Z]{3l&[|~O,KGW[ ݔA(Yuk "2uZ?t=jGWsйӿH7bڸ^//=o?׶/$/o6sۺm^Umo6_q08	\kݧӸi"r[I&,IEI/uDE<sWU\qEfRhY{%Z.7RkҒi=$wOQhH=YJDe
+a"1gdr
+@-TRy/rc!@g\{?r"j9bYmjVr@RNeQX@W|K%0iF6=]1Y?32NwyWlBh4>XKLλcA?wAҶ27fXSmJUāb*;KnA_WTXMR$%km] EXoDߦ]Do@ecGqӤo4|ގgM[N&0}MgoT2JEmE1S`IטDO+
+yGZ1`"#yT8Qiz-L{mCutWR☑;+]Am7VbZ6i*HjRQ;fSn7S7fhbx>J<.ZI*ـo޼ño1P'gsB@{\oUE01	J˩j#`JYat	_S88{s>IZi.<Jv}W4ns߸u䖦g¡2mW*2s[miBI`{cׅ$"(<5S
+g
+CW)A~$5m47"uhA},մxJ}%^s
+~rVR/_leJ{^o5!=VPte3YScG+P]]?n<z2)zח?Wn8}W<؁kw1Ӻm5pۢX,
+ZJJRq˿)r"v!Y.:¥L"[!s'`%zrRDc_ID0fHൌ07UxR>je7B#\2Bo2}E*GV2}Z.KK/RD3̭bV6x;J`#H?\8Z szDPc"tGj-MڬeA\2$cjݪ*Qu ޑ#.c6Vg-Bip6RXVR䑳cP*'jJjnaٚ gf
+PdJ&dgGtyh0^nAU$k*6A(G b	<	$hiZHJon ؄Qw2/&| 溜_.z2[L/pu/fՌ]d-^ 	2
+"(SɈbSȁRɕ<)En<
+ԙ4ƍcG&#aVmaJܟU5XRgbh$	]$[
+m{%S̨R;N:A^C|;DvJf<<⼍V=xk=Sc!`w";TM^b D$vnD[R]pbjsLwHi6"ho1 *#N}x?.^٫(H|<&;iZ|t8#?V%qSSG-Ja[ {VPѲ&H[*@ڀ1X#[(64:(Ѡ!(OW2Ixg8ܮ8Xh@MՖPpJ?<SR`uE,>s4=Z<<[<yK\vbJS@|.@!<=Oy&o1I a{7$؂,%іիYW1w_;GU]V&EB6J]g}zAXlucV"5 )ӳ=Hj0*[OXfobЅfĿÿM/os,:Xև`@cYƀHeӃSqp@</]]׮{EIN#,g=ه}pͻ$7tDkcVmOTcp\i>Za<߾1KR~jĿ?i+S^#~Q:=k }nnox,j|sϷ}kr&YN+T*U%6ǯ_.GUw6V;hGhKiB{wN:gwUmo6_q0ecۤq3VC(!LD"5ﻣD[Ӣ%(;y[(>9ejTRV_z&N.UN'HaLQYi7DJD/]#µU&1+
+[(i}(ڈ rXrv |ryKBh[hsK
+%LrjQT@`.LŦZF+YQ9\0Rk]w'
+%>Ȁ.vP[F|HrU!JwW&an_
+ecoX9WiFiǡ1;MN	t
+8^AT*Z;@(C|6ߦ-i"7 ڄ`$q2Iy2cq77|r.gd6kO矓! QF2\!(f==OT.eJ婼9BɨДZ?Be$R:/*ˮ{) 8T7Ssqq)%?'<UotCĬT8Slu<\fSv+jWnhbdZwTۋT.*j~`4&^ijJ_h~۩o5z9RȢ6Az7Ovַ5Z_ʼ;a=FptH1b}
+{9~u^|N։:
+wyVF7uLO/5z[p&K"6C˦?O&}#'Qه&9<0(0%9FKiSx\ѰtqzAZ[ȃqQK
+ZvׂOJ'{xvG.)-5G@pvvF3RP_Uփ2p|Aarw=W[G}0(v3\peaC|;?4m1SEoϣY[sH~W\d	3{u&zqLMMQԈ^m紺%%e[s?̧J
+98aDr;a>JWp|EMd"[ .P?pLrq2bZ{Э~w(aDX?̓x&s-7]w`+X5E"0AQuf> _̴!(ǤK:|)7U..!2ZcDU.ظڀрPmjH@L'fZsPAT:g`wkh/FH8M]p%~ J/Zbdf(uuWhy|Eb!r(gAQ: ЊDAܑ6Y,7h>a3{􆽻>~Bq׿i GPKr-(w3dmh1͹#&A/f/|RgŜ˙",p1<fB頊u7%W#z2j1~Ýy^C-B,
+ccU?P2vTش$?B&6*BZ
+0a	wc7Gt*xʗhxƀ8uBp4b$[%ܪI#DDA^-HqwyV|?gPoJllKo%"E geK,BAxX(l6p~?j?V0MYmxa*oBXH-pHf7:>S0eO^aRb ae|TMٶ}?tF^nޏk?y96ܯ2 vn`M6^G{jRf^3e9
+Xx$\s6jy ])FOp9y%&'PIɡ6G='|3'&jﱩd{2,xǾ+;gMv{J;!ku:	 ] C|ewQ9|I]Ysbt` mPbiX%ET̪1$//'inJҘJY,<p[ו 1PJ8K*ЪQՌpƴFBK}9[ʘWm
+K5
+Y"kbѿ?ge k`Uu*MjJ)%N(M6$I4V3T6i[-z:Kiɐ t.i,5R:x0HyMQ0jT*bL%ǰXx4hX%8-k8T0ulIPÀ}WXmM/(µ^y&̄zR.虬:)רPkTJr Bn u {o*N?Tѧ!}fK[z\+kzI',>A!JTDRm%ĽxbVR?1:0dJS&=-D<F%%A<3pyy	7hZЯgA޿j>5ZS[..f8SV'GD\FUSR"#YceM3շEƚ2՛)cR1:XZ:[gCx[m͎zLg=^`ݮWCt5P͹IֿKV[ÈsoO/Z<~&C)M Q@Dgi4ҍqF,s8_fFsD{!
+3\CΖF)b9:Ǵ-m2-_a+ƯZ?@BsuV߻3f^@5DAtpBZOEyzS1)2;KYX~AQ~ppekh戃7!w9$]rMۖs`{2..k@vado_l?D۱w|$hnׯ
++vbn(!ȌE$f\,م֕Oh
+y^{}W	-\B(}O}m@Qö[[gE9餷ݿ~C/ȻpǓT\{s7_djLʱJbőu$ĵ\$g=fDs}x0/Ҋs[Ww9@w?4@}z>]F`a<Jd`4i,n|],#3^FH<ktox&eZ$3Gi緗CoED4c4S,hZA(2ȄX$#n 7lrY$<`KIIll!k(V$NĂg3\bYX,$"h&K#T[X6-RUke Krt0 'f%i
+)JL|:qA:xl:d&N\RX:w1lef3$(cKc9*t<2B>YcA@MOΖ	\3J3"6N6߲6`o&yޜ~}~=e7ً&W7_g	P.$PbEIEͣ,
+lމa-U$Ѵ{JL<uGR:&iӌwSc޿ w@l]~H$dZdS/0IKXUe)żYǤ5uE3z?E6@PX.>&Ih#vT#SY46|Ԟ'kV0/'Ld
+ddmܘIE߆Lo1{	+R>D#v`0<1TnEN$TFŝٓ#CƜ¨M"uk@dAr D9=;bg<7<NC ώdsLyMi"0Гz ,gN^> e}YFhx<ilO[=MxNQCv<v8]`R<LkȰo0ty,2^v
+maNɮVBуPϕnBn\VqN``ULӝ%ըjЍ0.Ll@oôEG[AX0qI Eפ;O<EliһcɏXo]$#H_!64t(ΰp({d$ݐ[B:Um,)8 t/ٲjSXjfQu0=WZoǦ2 q81xpN<<NjZqXpPsJ)('y_+{S'kyM9b
++ȭ
+:UK-k$'YhA%/
+	,  C>nk0
+*ȄsD @u}7*yP0*ۯJ@_m}7O VVW FRaªXP Dɳ pA.vg(ZrZ # 
+F1HO4n&+1qB+2ObyN~qy|~2eiEVEJ6Y;J$g?㙮Kg胘=Q`z.BÒRGdS(%Ԕ6olzM{J`U3_QUD)ꛎr)8jZ[%)X:蹊UUC #>&ͥZ&w`,lp6UKXY51hA}zƞiܯ<VC:#Qobg_3, d>'+㭈tw?d<^q_9-O*<Vc0\} ԇ}>Qb.5=ٜLMmhsufgm΀<>k| / w]A-'kfQ_-5tP0-
+q:RrauSZ^Ԟ6Qn{|'tmqHϰJ<kb8ExZSWAeĜUD,w:*b_~s	tKt#3 rIdz{U*P;5 zF
+U`tqF1Ҡ󻝦')A|ǰ= );]zc5jN<|¶<j~R?v#oʎ+l`}(Hϛ2wi"N9OD(YZ2+?pDw^urRC|B͛fzAAܿ=>+!۾[Kgو嬥Մv$WS>ctff!8ۚB%vխ01ne)%R Ns:l4:\!iv\ rjvu &j&Q\pI"4:cILF3pB9#4ќ`4XqˊW!Vzs(ܗEg4
+߃D oQ<IZM<`=MX빖lYISjؿyPXdYe
+pEǶZBߺtFZu?iUfe24@%#)S3;H<6U5l>[̃QUa_ձx&U- gN{ZIR5DydamQbgؚᙩlN{;&S4Es-d[_[N[rD P}ԽULګ57w
+^M X* 	#^A$kA(/*^qX	v¸2}>:2N֞fۥ#M3~޼zdFUYL	T/I0D=0X|2<]j6*\mMh~QԳepRqnS,67[ZFfx'}r1e).S)Bz4Vա!HXw-[w<#CIMWKÐN]7I#gFeP:Wװ¥,%"M}j}N!B,M0J>~w	֮27l@#u<7d\cIx[̬HK` EC;^UB{yuDbtf)*)Dv-s~ū~g>
+GB$TmD/%+:njfgVn$ڡ̭\x1EULUKwid9ah&){nLTȜ(5$-R^?ig쨂D()R,u5ٯ{( *J%-hýAQI-@HI^uXj!`ˀjپ	{Jә45V(Tcv?M2
+KLhQwG5C]<
+SX6.[9^
+}E'Mz፪Q3tusuvfЀ6=+[{(Ęʋ4N cvKW)cϫ4UZ`M%($:#G|݁VHa@'$sj}|oSRƍr
+jmۊ&fKF㘾#1\:D 嘌VQ̻nv;y:i$WSN+ph"lC=iHZYE ͈}/$~< ]bI%ꆈs"$tZnU?C|[&p8\A:69
+n&`򢵲=Fh%fiwJGT\I-`<^Za
+dh[&9K[<᥾{-rhROť:*M}ZߥRHr0^^O6&i3sUiࠇZw:7	Q'-B霠2s)N V9	)eKMNAdӣFxdEĮ(ގ79Û;PuV"EӾcnxS)Ielvg]ԧR6k՝ӳ$mtۣTֲ&ߪAοtoz]'-	0ŗ_D4Tl%4 dHG$ȱA~Ҋh/`bjҾb{/ۏ{ t7].j<,3(m	=wOt@h`櫨px/dhmC%ւf-2nmڴh [/8Y4PR]7)9 4-m7Rk[lj$Pk^`rOrF׸kǟp/R{- Mnև֣ȩﳛzFQp@%{iy|#ƙ
+-7Ngܐp`<f?Uxʶ.iܣ(1dC84se¨3A1ގpU*-]oP,$%;xb% %eoG
+>owXYFp4MDfUo[uS1UE&Dvb]ARKc}y'Jdf}6[|l<еʷ$|Kh:l fO;.j-DUg*L{>u\ihy:wg[SG_ !RMlS˒J.jIu;~=3^Ié
+#vgݿyh=ځGpz0H,Tq8R	8r(9$)gp(%KK8`*7{6:)cI0|cw&A C QLj|PX?u,dc\0өKn|&r.)*ve cp#7&UFV	[*L*1;"BФ]vw̳} L U2ΑQ`~"px.2aVYqf"Ip\<Ъ8|8@휷NGk7ucd"B1AY=$8 Pe}lݔ͊hl]lt1û˫cxw㋫K.|&CV.%I]@b"3Ay*ᭌ9)""*r	5l<Es)N0x[)ácpȯl"luq$)TSb)kdA 2iy}h FN8m/L8@.@r&Qt{6ĆC^f̀@MfL&{^U .s}q,V]DF899ǌiN%gd|q8WP7#k4	쾍P0p?&~4!J?HgG/d}}|qh2&ڀ#m-D~<QwzIc !Cc1-Ebj]TyRF]㤋03q6%
+!7(e. zLB3`sU(GRK0QN"O,":#t;JR[a1}71􌎱aLVa|%2g:+a14+&TC~f^*^ˠߚuP!#AhЛ!e\8;-ys]q̀!trJ;U#l=HOn$Ŗ-bQ/'5R9+ͤҧ.B$9*=t#IQWHK&5߭ڳP N?55tE,WfKe iz_\Qw)YrP,%'ܑT/cI=Bdbx&P\1<mcstP})TJ5|DR[#i;6ؽ02o^ąY>..'cS4mah ڬd(sAko+H	-%f,	;wfN{f]K%,}VɄJUkln|Zv9ؙI{:6(^᮰1fD!k320Y
+	ʙHDWZORK`Àɣ u+%ia%[0kMK_N4+U#	({0Y2zK+1`_w-!Ak㺐-YaOe>AbV|%z_b% ŏF0gXKVzhfr@?2Kn)$E)hv6e(ٲpt7CE\,%"I:ضkd	X{S{-''EzՁy,ypqYw}եS	AycD|\02Z9	23r%V)ɲԒ""B+omhWwrXɨ%Ar%G/Ä^~
+b5]Eʔap \,(OΙzvӘu>FCҶN3|J,e\H#N|?D`B=l<^xd6xLEM7T[|?8e<)J*e;h6X"yJPeo\;ף..4->]Nݒ
+TLج1mWEkR3ɔI٪	莙zhyU(79,KB 
+i`3]ލ\]ej ^;:-6o#Ew42͈@.;GJ+\Z	Joy^+:x
+/	Âǖ
+S!&d+`4KAZ:dcӎ|uӖލҕyQvשY{YMpFL]=J٤kS3ŕf}a}=ijMDЇζS,h.US-6VU2=[~4B?ጒ{a6:NOYn }P̩C9l5vo_
+O+ө/TEBt"Kxq@-n,.S%TUzv`k|-5K.!-}.>]kgڐgmT)}w[U{g*q\4%ٙͩpcJ}H|zovyBs0ң=: ˇН_nrvvI-	FiHBNxeN,[v[+'2PaUW #PKmEPuH8T=RraօmkvъJn'Ӫٳav+y+r`Uj+rߜ|Z~պP)U6ЇI3xGLȋ^&tT\X<PM,V3UeYMnpņbCF1wS4ϥH() p؞
+"Tױ$.~=4YZI2ݮd&f>-'ӕR0<Y&|57rH{ӈ-Tk|[m9{13wɻ|_`jAEyUQyIǷ"XwGoD{9$Opp;뛑'ߝ	Ḧh(Yj*tNΊnʥ0.hspk0ڻ␦>ES.]/ejst$XyB)}+YR朋R$g
+H6͞.?nKoO_@se~٪]v@Z,REQ_lkG]ve o[	aX5ݏۯ1Q8\PŴAtO־=R;.1C ?ŴM9q\al&n<No<~}ՋqeߨkEG]̲8U%@bܝ2\{{g(nflR8fvqjN<1><OߣL]x.pxugy2漗f}%#Ϝȳ{綸;G8W0GV[wrS|ڪ,m|,faq$`[VmIuyaPGJ-
+sCP&`/]AsY&QO<݋a>$%<Pt.EE{{Y=Wa?`<{]^t/-p+48
+Զ?ʅMʍr*`!zɑ^qH,Ge)+kvx_TӇ̆OqvסBIjx d| q)Z <סz&;[\lBot`]ԯګ2e<F5/3{r jN (Z9!v(NдtDg[ȵܻb9kMg?xoq0;)N_S-y X[oF~8+xaɕ4ĵձQaR`))b5kIjs«(9HLqܿsdx'pw"8c"qٚӿq*#AP4E&K{8dR㟹\e[8<X&dn +1'j䶑VbpBY:sOg-PaDjPָGVȊ ,㇍V
+V_&;%ursEd)N,ں5bu>!#2qjop7l OyϓE6I$Xkjk]!u2K0m
+Uu:˒7nGL+<*{t~{J;qGo>^%ϖkĶA( bq8$ԁiNE4tz9L=y<̇d~ߏfp3,&)7dn]SB%My<9-6Ni}>99+	WRhST2@xlDAi6%oʦBHS}H<,<a;C͒ \iLy'.?(S YNNѮ<El#ˀ_ӛi5h|]TY%y0}[ՖL7TЇSmԼsPvq'dA_6|FBK	9S2>}~6~w6t")[p<6z_C#Sx8WD8fnL8I1>1;l`FEdyhnEO0J B#=0s[QsfOE'eܧpyҔu;<,C:
+S^EU[6@ 2AG`W 
+%շl~|F'V"K۰=	%֨LI06ߊ(툁"瑧G1PWjfee9vHKf벖#5;~8m[O a2Ӵ-YEc2nL4`Ôb>86ì=-sR~`~|GU4Klic;gߵACkەU~@} Sb9wq]Ues/y¼ɦwYWKs+o>N% p14dB|SL
+c_a#֟X҄Q
+gVr,Np'V~L{TϏ(N}W`t!GhLq*6\G̺Mmz</[ۖsCNQy34IUC0#t~Ԁp=IՁ8g^X|qC7ˬi9?JVU8i5WĜX!0g6cܠ;aY^pV1msKR6	7gX=@T7<7%N̰P9wI!H:nFYTΜ]}!lRbSd]m>@E3Zbˋ"2tIs8RX-:'f^|@ҥнh%Pv`9\,$Gp+J1+ה][]9vT
+ˍbLtឡ
+H?av\=i|<xDWY$uuE99<הs,ް1״^5^	S\)~,	vK-CG]^IHK55t.s7L]i]{7}'>[:=w.]Xhf>zA)GX{Uӥ;fVs387ġL/4'fl]r:=A;<rqlNI;on9gmx39|Tx֎{~-SUcgw_*g|J>}-bz>/YmOHί(!$lHFvnѭdv[Izqܹv_UuNz^8HtjJU:; tDy6DdYwЦT$L`5o\.p4VڗÛ4SI6QQ15RejPJ&?^]E>`ר<I8VZ$R|0gAhSab2ҋQәLfjF&9-ҹW7F@Bzhӡ{9sT[3YRɅEqQ"Q"x׮21yzR]nY8eO=mb7`x}B=DfZ2h
+eMĒ<Ȏ @)-N;APuSi "^]f!v؅Ϸ_>`t{={r;\&CVyaH	TEe\ ESKJ'i8%UFPc,UF[k,~$R>FZ'Ó~_`O1ŴW!^]q$)2A+#yX9FS>#%,-=r
+k>ұ_>kkM;rRlƋ.r@GCؠyre_ZYE0WU}^+Gm8b/.w:0Br"_$Zm̽Gq쉃9hٟ]JADcHD'&	Q(f"F'lZ$EW4rͳ)xN:{6eśHpwRlb8ҹEOFٶ)Q(̧,C[x/"\fWMqr|Eוa_3X/xcf`BI
+
+0Xf:Y>_xB	cĪMN/Yq%QI`h7n%ir:-X;HS~ME>;9P'.mD܆P_ l?\O/8wKYAlEF%.gMF%x@Oƶ*Qf֝wX߅_%Mi*Uc#0ShxxdwuBBwka#ʺ 
+UbgkHɷTov)MǑ| *bup(W0sZ LžFܤ	$%N$d (2hˍ5w\p:ˌ{b"Pʨ)=Gto;7adv}] NgMcc%f,'NbB,GI
+`͝Nϴ݈\ڙƐM:@ D3QZk`̷͔߬\GojcѨu	h(["e]g<`_Wo7;}ÄB1)r\H,N#"șj6Ia78IkCHg:RVv`KΎ4SYG`˼ Fﻤ*nWrHƶ=,pXuve׌PсZJֻBu1&.BoJԫvkSfzc5P/r[S;C8bbuLөo! LNM24(:*8\TNڠݤQ_kci{߼7Td +0+V{ǄگS茌Si9I(,."P(t~~O't텒2𨽝yz=!g(Du
+Yˉ[:iqVpG<kM<#.h*KEsC7JXl/+Zo|}_Sf{rcNhuM~mV )[禁wdh朖[?lԫ/B&?-ۘ4m[V69"V&A!T9tլTuT<>QjTIs$jqSlyՖIGxNAYib҅
+Í`}*"76Qh7z4Si1ڴ)}L2w{y-w(kZ]~4|y?{_a5Ϟ:Au&upmRwػ[ƺe]46+l~lu#{~ś~ږ)n7TY:(ЩlE6qQ+Ú!Dڅbn-&}HP<c;	I/3s><m6> %MB $ԅKO~V?.AfebN./?_Xmo6_q{4qf	fpmQC@˔MT4;&]m{QN_f?:j\XB&FD%s0	"Mt̨4)N,IQLIY<!Ȕ"pL,tW]24$Lsk6WbK=~t=^\BLi+,P'P1X#$˹gff\2^M(wF[,ƺJJ#jF Qkg:p,+HRv-X$di]e}蔤SJҨy!i0&;˲	v/i/.ֈ߅
+D^bƢr E#< iILSwCo^@|>|N~~777r7pq=m8^>oHM, SEYOb˓d"bxɼs	N\̗JSj5:9Cz,aRi݊W+r4IӘ%^9?GyGx*b:-rTKl"4)PQ
+D.`L9fBdVoAb[tOTRʤ>/akL8$"}M;f!XkʓWxzW|Ną.uJ*x0q^TR83IL`*iK
+&|GT"J(d)Rɠ?vڟT6՝ ٪BBא*EUJ.w74$6FUNU,BjM'a3-.[[ؽJ#x[s_Ww;;ndHػj,l IA}b+mh,MCAEk\
+CD̾Jj$VʡSECA.3P.T@iC},%-Մ3z-z0?ocES,MbWh!K:x-Y,BKTՌT=clNg#I>-mvئ>@4Lgr?r1ʻׁCk6T66Х,{j0i_p`5]Y|R2wpc)$rfLoEp<WCG%9p!lI{BY@n0n
+CF?	*"P}EJZ6TF0=ʡTC:,\`Vii#){䝳NĹA"NL[JC~EyH&T%]E5^$.vQ{);&Z$d󷷴믫ʕdq.6>W*xp{uT8xn_u->lj~劻V+\̘z{nENUhZzQj	{/_CKf5eޞHC-$dy+s.Z7/9AI6IgֽB}^!Yqd^.z5Ӌb:Ǔs";Y.=Eh(R<A*mA( 3pjc˭)mK+EzjbSEiFr{L3q
+(D;Nٴ?e`}akͽf:.-__y=ZϖEQ[tn!|;L'
+%;Oc7@]oމ+3|~*X>f#/E9'vC{w_~ԜevWnq$b-}Z/XoG_1,U?8vaːDQn9>n1uwfӶ"$v6U''8+rdfDpF22׹J)3L2GL<9SdAӿ>r2-Lr_N"Dq>>V|zн1ZKЎ3Aa.QcAY
+"[OHJ$rq'bJ*}]ܻF> r/PEb:_jg{IK">3h.6e:Ư^QҀYW@Wɀ⦿ cffs>75!U.6?bd{S4:|R5F\(hlVEllN @+
+#%uiZ-`ؘQ:|4/Noн-\\>t>]A8>ԁcP)r-Q)@hy3н,Y!\٪q5R1ƂJoJaHxwl2DpgIi?Bx~Њ$i+f%ߨ<MyԆVaV
+r@?LЍ(Y#=hJ֛HR=EN!Ql登]4sw?Bnl
+C`x>S|@Uqye=B;0J$n,@c@"nT#4 Q˾R<6c/|0쎜W>F3ERRp1Wɩ1Na,#wiAU>ѽ cRJB0v+c7̈{;O(-,+fpC_wi$l5ʲl~Nb\"ttZBz;a{,b/=y 0pGHGGi߈t̻^֠s`Ӡ?4ei>W;q׷lBĠ$Ą&	֋'6yO3UN|*x\M?&,%A3B%f޷q}IaVPx!VH=ws>*!SZk9(h>%qVqGZDzkVLHio+s˹,f?9*tmr%Z>po|"gF@eqyYdO!-TC,+)׆,Oi0} @X|8S{);#goeކ`nbߞk*d1pUL=$tBdŧ2KqD,fmдv$,!UAO4 0J " ,)ٶ #.v2)]CK|[/ty6e-_D}i,ݔf&JC|oi
+߈RÓ^tR.1t(}Gw(nUG*>\WA=v3PCg^%jaW~Ih#=w+^]3vkN%7J**<SQ?M|lOX[cw"{uفv]C~<q?Xr# 8s͍2]̩F;Tτ7]Șo.چM5[Q
+p쐿n?ASL6t>Uv?m'ƙBXzP.2
+w6-Q6@6߿oz	pznJ{yr;Xث@!-f2#Tn$-9W1#®XZq=Xmo6_qkǴI5fp]QE@KE5uﻣHE-mAֽ~:_0)PfLd	wx%3-S~]0#hS HyyFZaB|ؔLq"2p:
+dI[*XJUyVb^ ,KK= rnOgwc	]a 0J FS,f),;RT<a*LCHdq"G3Je:ʰwdRidч?' )GV{VIOց?<7.Sjj'gDΩkl* 0C`aL~eYx UXu>d)W!xcT!c)+Q EY'mAlS|zS lSOt<38NfwSl|=w#N>o>p,$0RAQO>By(bbzYRC"ﹲȹZ
+MdX
+cAIu#7ϒ7X;252oR!;K>DؿmphMĴ,T"FS!6RLSZRmy/$kJ<5+ݵ>.*:RzZl=@^2WKEbnzƫd[t{/=o["5>3(qc>}vU*g^dO^Y,[hR3&Y!c/)V]*'`#n̙>BH%1Gq lwRK7"G:6sdDthT?{<i*7β-Tn;hrTWG'ak+X6)px9)כ='\I$iyJT[̕Q>Ê>oUu#uNX%$(8 .jA"DUW9&W5 >8'_ZXe)bAa=^:lэHCĵM>3pSLWI3l`{UϝnqB:lNV@,kiO}qR^6?U8xq,Bew{쳽;QmWҴ>fѣÕd{kcSoORRd7=uZhՂwxۛKm/\Ti#Ҕ.(Ug,lONjxqq1e|?grN7ژ.xtQqUG+{)㬲2"`̪Q=7HЅR:DxmMoPFp]/nq]"rtCX>v#Dn&n%o/g-ݨӄ-~$	$RO`ȟ.&>7 {ғ:w=x\m ~AH%c@	Abp0oo;>.T|?aW-Xk0j+_[(FhzL۟=98Rҗ7fh?G9ϥsa]v/=ks8+km%dYŏ2vV&K(	HIEqf߯&@J$3;[ڝ"7|:#	g,-8	+/Ó,-N@k&#VfԸ7M6.QyHGQg)ݜs{g9e1HDMrg<-c7˫ );6PhQ"1(!l~Ǔiɲeba>rs)`5,z-$)Ւm3 Bw.4N[VzϢ{f%[@gK@͓8J[R .df,*7iYe'";Y>W$^ޜҪϻ4Ee=Ր!(A) `́餍@ z7f\ܴw}w}ݻ_ݰkvruyzѿY..Oی`(y#i#K-RNŜq<"p6>aY\h@r1KRz)++A)CʲzԔM2֤U9#e'9J2wkp64=wPC6l" #*X<fqɖ)bERƣ $uI3j%=h҈~ywq^LwD lY('Etڠl>~8&'O H ;/p)\O$U9p-J.tDryT5?} Jw&ޱZ,z"$@UH$!@\ѕw*4K7Z$-HEp9#^f#u!qvI'a%Xʄp)s9#))3HPCA"BmJ^LR&㉚΀&(ۢcs_rRMыa6i]=$mc٢/J6 `Wlu$qr9&ۚhz˷bX;f	v56-{@+vY2aHYh|z,xpljV6{PCOx##i4\A1 @ԌJjZJ 5P${ h6C#OS33x;ޢ!>'6#H͸9*H\9LC/5#0VŃRO4Lbo!*w
+&	n-l*.0  a8sKDfS:9B;E{jGfLXa3~X84{AB{@G&9E/sƘDĴ [H'
+[/,2e<*.3بsbM2bE7PЏp/JGhZAG$`8\D eGsV%Jmc0O:U$4é>d{oo{W gGHfnУwjз?%Q>8aMOv󡘐y\?m_^]p#w	,`'$Bjw8xTO {o.~==;{{ώAVZogzӿ};u>nOl8&vm: ~ E΁Bhp(`M @+^6BL"I>J1πKHH/No/vv*lgcZDb&&6b6M8M-2?6[q)MDβOQ.h\+,%Rm),UK7fA+WxKk(	of('>r%p`L.8
+uop	Oa*ŵY!!3Xwhn¯`grjt3hK %IqQb&o?W0bزfr;FyTrUpڿ
+3P0$)#e殝$"x{K/n#GےMmC[%4AlcwLfG׎`ؚY&Tikt[u1ooZ"w\ޮ
+bS {#|$fO0+xŭ\hZ1ԓ44PpmI[FUlGy \C xWk3^N0MNWnP?1gZ0ˬ- \="Z+U\=9.h$sry8b1
+0ZbȺVB`DK,IX
+
+!,f|չ)5{8,0jL9yFk8okԶDÄe׼\r=\乱 cvF6,71JNޯ;}}ɑDu+Dڐnx>㠌DCb
+bLLbIqGi&d4Dl>/pOg2UuA,(`5*xL[2,˄E-m	(*Q,iF- ֡ {PûN+ef )j^Ze_d^*Q&<XWPd"ץ+/+;_5~Q#~ooϮ޴khcԅMEV0oWe&B:)|;z_,ͳ>AR*w8)<r8ZS &WVej$"]ڟ*MAhQBztϽa(B[)/ըvgܮ&
+4?hab;WN;.Xħ6AwN8hWYЂZ} >Vrٌ6)Y&"q*wL8'F؍8MEMxѪ	Hzf`rBMyz
+	pzu)AEM4㪍SڂtcTgw8	xVH:zCmG^Ln$;|	s"u >Tm6cXט­W%um(!Hu375L}\CǭHeUS>՞p_ƐeSI, 缡Lhm3UzYmG_v[5Wl_(6Ż7rXhڄBhyɑT=d^\+c3V>_{{,t1FH_V~Ted:6~(W84~&.͗!*Df员T;~G%3<H(G[t%˧o`"6AubV	&=(0Jjt'TrTddYt;mYGmDz\3A^b@oDhXпjsΧXB¢0jaHk'DUT
+V3ѩ1%DC͍֓  xr0G	@\P痪4[4?|0c;E?O6nWUުbY f$9VF8hwTE?@AeJعW譳uO־108$	z R;Q⾱oUxj2 ޅt/e"pi;4H
+KU`oC.*N<|9zGkG9lR]"
+Yz&յ!%zz߬܀!|0>6hQi|zKZWNE"t>^[c+Tm/C+)RC4=7,	YUv|T(wCu͹;jC֖J4dղUlW?]SP/
+Vca̲ZVp~FKz˫FvpfZ
+tv}{U$WnNrHHݩ!'ͦ?kD<t,`xT>ֹ#&Y [`0<#tp[GT3_%ul[BoٿA-Y>Rs5ZIx;{/C1ۆ_B/*b~ܵrU.	M9,-ϬZ:|6
+xO0褻!ngfI5hz0䕳 +lK1kwS#eTO1r4F5W<5j=Rxi4+{TBj#yleehrñ>P'\	ӭѣYE&lCqwWz:ȤۜyTѼQl-gCsh<OXݕ$&ot:u0si< VHERRa))	!ƷnJ鼈PሕdDnݸk[Nv&p%EB7a`֩1M~ϟy1m9G|y*.%8&xG|4	<仆g;Ӯz*A@=.Ж#Tm}WΕ IvWǅ7ȅ8͡PםnȌ}jfl͖z^n!ţ0Rs}p]=^X68~=*'2w^`۽;tX	8|#ڗ5S.;BBl	cblZ0v#'c坤pnhu0!f (F_L'cGYillRf8_s" ]麆$S~i`x> #y{=FQDp#dhV;oSG4 [RkHY{49c?^ lJ=t|c֍JbyrZ֎A_<v~BBNB"gW+a Ȳ0<z4s`v6Ձ3 JMJ[;lQj8[SǿB~zezh^Q̵T镗v/!*b!&-Hk,ѵt&E=P(YԷvtH2S}U{ԻkW[U3ve	XB׿uQd-sXYYWN#nZBGjc򥪶vnqRw	jY<[Lw9ޭ' M
+: vּ*@wx|bƍh%ll»'J}!E)\H-D)OT2x%}_EL~Ioj#&k-!c[&%&ٌ]}7sa~x=Z.;C2\*VXcFO.=.>:J2#;缦Tx>+7cWUO4](KcX@jI e!D>~ڑ5դ=u_t7,	xۖj}ٌ{,UxP#]%QkWr֬KqCSW`8bQ54:Ο^yMsLmEw_x6Vuj[JpnˉitV/΄ұIN)=xd1(hX1Y0_F7}dHgVw6V0!mIJxR IV|JkӪ~>c=3#AZ%n	5dcKXS"1
+n?lOgճʱk:,bEQ!|4g" e 5 Ğڊv[ox:!lsboIk%T鶮+oZZho/zp]np/"ѩUT/''.>
+AX5ڧfaM˙N/eȵdAhw
+\pXSqaג)ü*:$>pWqbJ;yp=ȷA!M0H)z(jvG_qmiLRQQE$nDىZN7tc8ϗs2tb`BDf%c<rҥa:G5T'ğՄE(N
+?nVL "q֫gL. ȦIon{FT( p=?q|>h7vfMEV{PE'X|_ߍ5R[s7lGqJ""/b?TzKc,Kptэ#M˹	==3:g5+bGරzKѶaJ;'<BlA=8Z(V!#~/i蘸Ǜ,$NVMnq\N\U i	uͭjPi&*	DÝzRG/XmS8_0%0)Gh()%m!i;FqǇc$kow%q^xkzV쳂o&I~pPh%HeV$Y`GљʌJeOSy&Ts]$̌UhND]5S%TMTfx+5LZi+vI? uAZʱ̬9J;9Up4#\*}C4%)$>#2z@QFj2I<fLpmg3Xg*,EQhBTqv۝cF2e!7.cI,bnQ}pyKhY;9ק`!f=N̧,`9@LЫ RPL b1Y\#	$X.S" &F;.;mwkp_WWN}ޅ+8kڗkA󕐿;j 1eh
+=M(rħLd\bu+5Dqb =ƉeR}CB3)23^.z_Fx|!$kT:JRhonT %)h2`X32	#A/"縖A%2Op4 H8l=~g{*!#"֚P[nV%m^ֳS#TJMCCNBa>$a;Kb^rpK
+7\!UK2&="-@X\m,\#7Wm$y~߹+Xʘ)ЋVo^{
+CoN
+
+w~5F3r'+Xfa[6lIT:%ua@Z̪
+qr'~A?n滅Z
+.yQ/<I,(({sܥvUQyDSdP0|b_%^jᛦpNoM\)u*kQag"-"@EZzjlcVEe!%)}yr}y߉M-v~,y}){W1hn "y7r1 AֲJYZb^Z@S^GY>9On}^@ISQ!OtC2Pi )bJ&ZdU/OUFXTu,9
+Oy[olϧ[.~-UgWj֜m'{aGy_u
+Onx=n>Qn>5fGQj\V	NƠ2G#(kWHQ]g~_h40)b ֞еe,UβZkBxs!,/ψwjTfw5n1iz~4n7I:`CX/^<u}L03arr|wv_jtӳlbS:';;oXpC49:xJM<%~5Pt*&o'<bI}xP
++sYUI?Zs9Z GُIM섺N[[KtfXIcn=lTԭ~!i^ZΗ'O	CGHD3s8RqGlxAȔ |ޒ0$0-y+Gc	XE'-G`3GZu QLQRePs#bySd&AKD?, D(	)˵xqbHFY~Yu'Nm?uЍ^[CkHϸR(b
+i2cr0
+4`/\nwZuY׫ϞОSrZ'Bk`K* ,@VA( b%ѬMʃ h^DT=?ƌ{Cް?lïO#wygC7QbΡ7(mGRv)I	TE$'/I-y "@Yff&"\."*rXm@tC7%RCJ3;ufnۆCÒ DLu|L$'c-m,1ѵT@aLBH4st	%w)c4fD>A:\q,T#33fgR$a
+ee##)Qp鴼^ҧnH42-rb~̋6b5L%yr5|zꦜ@c$o]Dt!y`
+c񗧧KkϽ<<y	ycl`rŵ
+bp*B1IXϟ>˼}ͥLl^#ʡi݁~=2Kh n$eӏe2A;꠸,DE\r/`QXDt]~WSy)ƱtnmaYݶt. Q8Ŧ".L]0
+177q3X/ve)p<whd.
+ȸȤG?QwQd5~{va#ٛL=Hh`%IFm%lCY&S>>&󄖧ƀ*R8秿Ɛiwrjr$טOɪG?ZdIy:['߬?xF˼8vu~#bn<F˲kbaK,Nk"4sU	)`$fklVsm%0,ƜXTӜ-EVyG!Su\Ctg]Wo?3aaLic;?)%z5Yɩe]2*vKذ4WhZ?[sD4F>5PYrOEl/IfXwی
+=L5[p
+Jdѓ/C5SQ)89Ō%g9LҕhI{L7UV͑hBGCmhT,0emaOt(mfG)v(T.~BtY.IQ)8El4,ݴ(h#'*%N
+Ҝ)kitZ0	LmgRP1|V668GH-KbSov3
+p隩
+~y%Geh{vZ	Y|D	!iQlyfAjAeክ̣hZ(Z;p%ZL$s&1%@""W!︾?<TaRm8'['Go9#WCrKVjVF7EcUm(j2ߣ}b8,=ŰBg\ǝ&p-2>},fa7{SU_={@_m-<e7[u:i=},*օ#o:ik)RQIE)nWnp'ֈ*D7jԤ|ˮ-=,MHStlrD+at:q-t,EQHTiLnkNϹKy#;)|3zG39o	)1kP]W1em"XW{ ;:kY3<w-Էخl,цGpmth/==u֧X>V嵢(RhNTD**iZfI=Ctu1c;f<`.0R<P*/__;1BZyPsoLgYNNl`᣿Dm&!;`] ?JD`\(]Mڼu>^+vQOA&#nх[M~E)өnH5Ӝ2aUkѮך|*h>9՞ѤJﯲ=JU7od-{+G?|tޏƾ/erׇwekmmOR6 NOE/d9ݜkCz\L]Y5\pmmq,Q:vxYV6j3=ncL/*5j}(]o"TZD> %),[;hmW;lt.[xh/\WP[ Ly{ nwsTwݼ[^5hil{;h_pWXmOG)IUӐj6"UB>qaܔޙ}3iE^Uݙy晗E`NA-8?Q((
+]!sSP8?hVLp8pʔ{<:mrQI:1+IC`4Η<T0\^O`XI~K# VZ_*0CUl:4R!ALLM//Dc7&WF4Yu%֕זC$eWGZzF
+3=+qֻblD
+0
+D6`R^oZu܍ļ\#v2aDH|ObD	b؊" Q2;$-]Ô H1:`GQ>gct|uu<NFpq/Nx$?:24cAN R\>9-6N2?=t/'laqk"bK
+DSLtRI-}Kl5Qiw6Sz=?tg^O/BmCRLF9sojX.AzեIZa&^+L;C1jMXbQ@c1e<1 UKS;?dbfZt%X$ӵ[Ęlen˳Kh.,1<<Ԅ/؝*"qjL>λL4z|zS
+ZC/UqNWӦrNbcTE2uG79M܇.#_얃L`BqACX QK`r1VCsY%um) 4ݖ'^U"B+׌۵	c1P:j~:RRhku&e!WF|pw4;>DzzWdgg稕.3MQ}88$*)}:K^cIeVzܰUncQR10o؞86R	q|؁SijSJvҜv\gLT!8^*l:IT`\eIbnnD  )lӏt?׵"K!)kl>|L@k!8'~-~xQ5^%J?rxR+dEN'dx+S*|{V+Rכ+vEIbKz6(hT#zYcѵeorF&xJ1`H^|6[J 6rkI$^U2%4i.¹XHpyxd_0dT=M ^j m//R1JWLw\u7Oɵ{mqv0נᛘMX&j,:([?qF6O8aBrS"9yvoc0lmp%`urP:yZ,a4<ps5l\tahۯK+UԹӍT7\u3Q
+?$L9c)a)h4b|bJ76վy9#Sf}`.mKh7HI,H2v͆8;?9,	ucΔ4ZhFsS'-_Ńau R|҆8jQB{Wm:Sr$6YoͦT7| ^UV*H)1<՛Mᡅ9ߵYmSJ8CYBj>su'BE`0^kՒR$:->h Z>(I{73{ǿGQ'W?ԚǏ8<3I("LRE</<yFVH%G=/UԏBGK%IEd"{?ɊQPmz9E-SZD?'YH$2Yi*=%$A3D3L渨MQ4-@M"Kb? X+G^*,F?LW@ )+T:	4ZK@D^h\0F/~@B2E^K)o/}4XHaar(QXѽ@N"E1,(	<D8ET4M"T,'g904J;q-{k&|f.hRg0ki;dxwmba8lѿ#ϡm:ln=6e:mިkښz֍3hf3.ƴ;x4.igPiа]36K1صNϰn`@/̾Kε(o^ k\L6ܵl^u`Gؑa_#aƍq=6avRgd7|pɢхZ5j0j;mc5ڼ)bXl?e]ӶGC`[XHpw}gk`߱\6vEnM6v2%ni7z֕:`Acв-iL#޾ve_K֮%뒌7g:$`+uFEf|A$"bKt|}joho@5@EFtt=fxthI\:R&3.*EFy*J2HA4Kua*&(\Ե?R.É3ue=mkf.2S (wxYp(D\SU}O2lUa eQluК$msυ~ZBDOʧVђI&苇9&.GsM0^5ڵ짧Hdk=<UGL} z><T3єz؂@,lT%i磳!fhMx~]4OxЕ8@
+ `s+azuFxLR0yK۹
+#yPփrAa%DU"9|9JZ+\YY-?|kI/3Z-#NF-0,tD;b&ٚ_%+tD{"hTJXa_A*Qn3a9;_eشċH۲9Ada>l-R_,OaUP8jj){5 AJΦ+,"O͗=zH߸*Ђwx&ZUCR5`h-:j04zݪu].'xYw|襬|5Ͳ0d{qԕvvFMbk#av8CNQ	8VvyEAYvg<ghrROE)k3cVKdq;W4^٪Muc63_pF1BR:˘gmŁ
+l{`n|5sD4!W=ꟸ::nq29;3m	♣Xk-N0)#JvÀR#6<g|1,Qk<ࢉ؀jiOsc,KDt-0m2O&.) 䁻FvTWz084 ?5-tkնұTy-cOI9B |᱔\IY/T3
+7|cU_57ƨtxU,k&:os}.]ON4L#
+K]i(*?4̋[3B_:8i Qөy%<+@5Uk+M5Wf&I9mxD*5ǻXՌ.vΎm;5YCT<OVFkoR][5A0?TiYJM~_jZysUg(`><1/L_¼m{n}(JpS Zw}>դC/²r@*Ya.'|z)b8nbCt嶺5<mrQHnRt7ty~TI"VA#k؏%Hpt1濜7U/bLGј#U4DAwιjSr_*D5q?]}Xf]O~ÇǿtDDs_ ςd)m#c;-*5.*(s+׸CouP$ERg ;t8.M9#0B[6bY}LMJ%j>կ[[~>y)G)OW^?}P~/u^.X?R~/YmsH_J-"l8 VNI\%`I5߯GB L.Y>y4o%Gq(Y^x?^2	N,7>~o[6:)R!ż d0ͳ 搧83+ #,bL[dK<X3/$B.,sHd|!3#OAt8D2Rd`KVjqwfhO棲֟J#Y0-pKBOYp4hRg,lpڠ5y<˗"t	O/1n3!?L`1uɐ0- *iT+a*(ВD4ǗbuYƙ 򛣒
+4^d433($W-MKxh:~{V:҂pt\=qpu9vgqtߙk>ua}58-E9o_-pe9K}ۻf7 (҄xvw74;kسnߴ^@`}fb4l.1X[Jܳe.J[M'-2kik{=+m4* U!'uǎuEω;=.#ZkصZ(3[ j;c&=,<{8h"!Dc=й&/-\Gp&"]"^XX}t-z;$Fmjrh9K{l%d>;uSpnk>&f	D.Wq@_gğ7Čc~9&9(U V]!V(e:n_|urt5U
+WE+=:"Gԧ,Fc휅9U
+|²5TpЌ~ ¼N~`KsaJ3MY{/%`q'vh# *+~KųzzF 31V;28+?a/#!%%RP
+?L|3+)G$=yF6e<H?/8`$*=zttI}"1Ep~^+TKt\G˄Q4nJ"\>E0čOii*ㄅã<I@ss&ͭ<L&cY" zOq')X&!Ҧ?U+gh*o,	.G3Y4PS`xZezNtmHqe)jTjxA0R|~rhXd L$Ź$U8BX,ZxҖ.$f& }sN/e4T	cY"KSl#U &ʨ2ob'ꬴtc]\o^_~8,EF\Ŋ4,>20йśvVe:^a9LD:+qEF&6cn&1SL(zM)\FpC]QA
+`6h!@-FbaN>]NTU:b #ES_Bj< Z64=Q4>4*N'g>OՠRh!_e,p]3Bw8TlKՎ]՜EptOtd$c'43z8NȣF:J.c2\UC^,X 1joDyKU"Q$&o@@wˏ[_Jf/Ǭg
+?J7|MY4q%9_u~/2J, яDN<b0Ϛ,85q@yX|q|=?T)w'/_'l{MoCG"uij0[s>7PFiȴ04"!T7"a~ $0U`	*tS<`k:Le|'"tJ4@u-.<A}`p8<ROc9؜Uv֙x(h	KS[4gxpJB`C]*kLVen|F;	n!}hV%1/*K✪qwBAU@ť{s	V MӋ?Z'G)MX]~8s$kp-nE"qg>-o*NeyMX6i^u6^`*pnAXQrviSjtuàd͌.'۫{rVԨ% U_ LYh;'B78uSu+RCl	n(㪏^o2tTܸx]&soM&uxaoVWW;`Fծ[d\ccܢlo^n{5F-onv=¸@9T=&7ϓkwLb)ͱ7t
+	rH?\#ԵGHmXzN|oX#kP%6Nղ䫘15t$5u%lc}]6۪;5Oz)W9fk󴲧zz=/OW|?<sѿsm
+{ɥv95n6+,X uTrk4/q!pfU{?Zىkz7<`D2,>84#^1ӳJpxLM`!	_o;S2AqgK,06[c?x3f  /M0|fD&0hk<?t,^Lqs!IW@rMg Մ^47 _!d}k^HJÄ-̐ d8N9X<?qfda>k{6reᇜI5>wdS4oȴ% Aн<hB$$wFl?iϝS㔝|AΧ1;wOስz7vN&><o rz_X:na7:i i?fEg3df3vauv_YgCg@Ӟt[C4PΨmu.`2y͕HO`u5$934c,z&u6a Zï$!	̃qvںh})FjO2?CThOGsm޳nD:8X@k0LFp8;^4 t̠+Ee)˹=
+Ũc
+l3*sO'6ptFF\kᜎ$'(>x&ܹNe3:Adr	HG<MJze4sqY`źissk,VnG9j% E;م	dtʺ+Q9R3ooApcN-B#%]ہ
+qrD RiCY<HxFc-@AjUzC6!Hz{IȆ1{>; +3_	rZь&}L-@rn%4ﳃs.oya]G"*mޚ;3҉YS9)MWEITU(#(%>opj|T ~_O^&-[ob3|/_J`UkIOO,%XC\Vks9c eوַ)y3J+W+Z8;>>fH>žw䱓9{'Jj6i^ZYq<7SgQ~_\g57'˷	>~PÍnϲX8`r骢
+EEHji Ԛ3T:am[<II1ܕWGcĆuVAPgCo| 9sDARl t¥
+bP%^vbzmWEy]z $#]¥uiMؒM7"aQȜA<(BNn_
+c$nb]fMZ$TD)6Iּmo\iZ(xgˡOH[+n>&F~,V2S~u͛llͧ70c{(S؃#X[ZD&۴
+BY?>'V>%:Em]/F;t~77o+.Bp䊷J\DIJ[Rts)nƛ|Lf	czV0'HR(HAq@_Z%Ybi'ئ;Q+GPWXi}^}Xm#҂N 4~sh\,= ȥxw9$.tӝ]~_Vۅ{!(9VBYYL׍D)td)"T^yf
+ykXy"UsvY<`@nY榘ܙ|qƕ~ě"JU{EѴ|\2HlEU%Fܠm'W,	̏"ܛ y>j0 +3̇Ɣc'Ȥfo
+I:r~0N~A5Q)HqLA<*ȁxƽ/Aj΅rEY.o$DY}9K5bѢ1*dl<ѐH&A#<)i=|0䝨#ha:ލȧZ*IJ{v9* 隫=op]ޕ#j;FEBx,VqlC,?@Jwrsh5vˇ|t O/@x;2N:yK3	OYTw6xPD+Ok+[F|o-Sô)~+
+HUTgJJBҟpwTd_W^,EP0A9UD_`RvByp 4#.:
+J9f~Az+]>O(!o+:ެ:S ^U(2}]bcT=x?yڱXJ*78+ѩ	5nNB$'Dyht,73SOQЊuo	\ÇFl4/ _[GL9pi?<8MGA<G{EN53:4Ð뀜z1x `|p5hY~L6n-;ǵ-3%6s!`D	㐡$(.D}2WF'}&/+A7|Q.>pPx`Xߣi2&/g҆m h5wnHX_XǠg>6)`hČV㨎Yw?Ոt`pq쑣F?\,U
+o93(ɇYߓfZ< KcgYxirѨ)HZL%ȋTD|MAZh@y	}Rv+ȟ19`TL:*J-;"oY`+L YUQuS%ڈ6?3vӅLAՕ*AjT'	PV\h+\E	й:N@!&:֏J˖Xպ4u݌	FcqtTGH>DXw`&SPJ8!dݥD\<,}lBU#Dj	ȹF{
+#ދegj z Z*{YLY0#^k;%(>Z\qH8YU=rMhi1kS-AKD:^դtE#U!7mN9DL/hJ&:4c_2G{t?5ρڍ(v,'D#7ǻ$52̵.kݰ8JkɼlrV΅#|eq,ary<}Z/yuUHA3W-_ԢY%=*FO ^d\x׺	R~Z$d+CĀм^Z1Mf1cLj:2y-( 2EAt-&W_L?o_kLρTmƩWnNX-}G.PU6iR#ΣR&ŝ'=V9J͊S<?e|<2+zׁqߛtuy$6pm򛎑5ZwDeQBumUĊ,*b>('s</Qb/d^,&e lɹ%ԙ"_՜s< .=VۢgXxZHL]'X2ږ&/+
+/wZNʻpy'W*Q6uQ@\T(ёhZv^FaIi{M4Ѵmbd[c7(sxpI`(>5?6ҍEۓL:yX¶963=<{
+mC%Rl 96yi{gE_&R;ܻ](5p
+B5)Em;bf񔨟)_1zWp?hGQ
+7klU!lGIoYHW}Rlϯ5D#::9ƷeAt[)-T.vtQ;Iźea_Q/޳- <r-rs
+ zl's[ZyTԗE@P]fe\1H}-"J6XZȨ2ϙ
+N<?NI;ftvDībx2ݹl!&N9qht'pD!G䱓굏dW{ %:/϶k*9|}%<x{Y?<[gmcH6dT
+p+8*ZOrH~yk1*ۏ3mp&+~S_`*sty~߉~mp6e~aM>6z9S`-"zC?I)r? r>Ġ{W9쪜^
+)ErPkVI9_[d.O86oUCD9?hMC+Bg}׫Y%WTp+C=@`;6}yqJ\~˱-G{-(Cg]E1
+r<Jm@'"-ق%~|&VK"U{@T]O0}ϯ"TE04moPeŚk[}iB'$ϽğtIh5ew-"kPEa0Ab2a_ـIg^6:2:B9Z5jQwH$8K渒X0%39Prxҵܞ_v=45t	߹79:o$<)%D#
+4umD痿tѿ!7@>qkё=c5.G'>):!ˎ.5`>jǓ'۹$֨yPǒ,er(/-GJL=HXgٓJKΑ|u})Pcq
+I#^sbL'5Xn\ݢrRp{x+P{/-N	АjOOj|\nöun0y
+8jM;H5RI#ABNk;X5_b%|39eqOޡ&d&{"/NJAU:Ga:>K!2,=ȇ\owl(Lv3EL@pF.|F.X-^8h<7Q#S5k=//H>]Lvo-<oM\GĝUvRN0+CZBQHKmGR%i{I7ؑ>wUXOQ@(֢~GcɀtKIg!y2=+f<a	G4s}sk#:Va2	%p`JZg<se)zKwaL5®W 1ptsdjq$	\\[P<DvΠ@Hn`;+oFMũC772; [w=e^rAeΉۚRkr344/1qryCbjp5hxKTVo0~篸UtFWևJloH8%kGS&	tUw/|9Mi'RRsJ,ӂ	Npd]$Z<$*ak#hBFsbq2sg"aFB 1RT&DSyҎX}KUt;b:!7"&3VR
+px8'#Y* J"%YWWDS(}=#c͹Bdvϒ⌇:
+nby2>6Ơ7sea^4-5A[!uS-|kl
+~2a%~4W:LHNRE
+]%2WB>{(;-23pln0Z?*<zħABn@YSf&<ͧkڸ%8J}R斁2%*v$1#F%Q4"An1yyˤh)KHS42Ca:nw2"KwӬThuB[F%8I1,`LP^%@9"xkc8V0jGý	zCKKi?[ƙ-c=u	p _.2(zu94^Q FѹX\eU`*RWbץ4a4oRG7'9&4xcJۗhǝm?˼vH\*i|R
+l'5nte5MV]o0}ﯸLEJV
+Q4uD:7kGX7w$M4I܇Z8>8>Y>d:'{7j%I` nPNϒsF%j~ӏѨ>D)^\{bیLٳC9O(+4L0Gv
+jp{KFYj:(ı	dLO浇KVŴMJvPI\Dq*R	PM,U7gDwM;?9vǧy=q|2CD¯|CT*$4ζJDthQb.H(DmNg'Lkt1)	~uf0[mWvt&6b	:5P|Q9N:WT*Ht%ܯ'kL9IJ"GŸOQ3&;gOU]8=>~
+9Zg}ru(xX,P+Rw[4ڸAײ]?XqUv[0T',˓k6&ʾ۰ACukճxDacvbC,/p}V@w} t?l?Zuջ/Z] 㫆a qvϱXr6}W3jI94/6θI:GX i]Q$H)R<H,vg<)&;̨JH@~T޾N	៝D)8D(*/4D	ltFVp[^̧1+a~	DJT:*DSL ]1$vTo<LpiI|1J`kL?C5%!u_ftрǀ&&S1K:bD^|^ "ts"詩3&8pjImUOkgeJLbѰ6felLZ<M'c@7q)6v< 7UgJQE$;EJzwF(gpr
+9
+qu*Xٟ-!yo }^	ܙa@a<GNjOO?MB~ۘ~rYeZ& RQZ]sTR?&DQf$qG<{YģM[`6GyOez0oue)tK?@I?"LZxJrc^s%TlolcE0ccy]r Tc6T%mA㲋MZ+gb]ۄ甇BfyV5? lk⿮fv
+_Yy[>rǄ7Y%6" ޚIS;8\]W4%%(}dPha44d)],z*wu*!Qi5,Bq;6̷&ugdZ5u2>ΞxUEe+͝A/lQWo|N`x?i:CQO)(@=Xjm3 S%hȩOI<|amh6yf쑆pFxQG@?%tawaA&Vulԯ1iDn=`!FsS)sp;M+^|.*{O o@7tM5Hu40qlEũܒ|klJe4 3n#tGx!b]+Vϲm	(M-SCS`X18V(&Ul.[Oe@1(/moYȾՐ[v}+?*+]]Z_ڠcFZoJ=Ŷոr6Rts[b=ܼ}0c.8ISY-`Yj3ݝ68~}B^<6&'gowz@8"em	GˮK舄4#Ў](>v|M%G"Zwр<9!cmgX&2 O3$Ήcj x=qa@Y(}b"[s?bWf)ϏnH=
+Zh8lAR9dh@[{OH[bf!@1ݨ 6ql4:l,x"
+;J'0ʀg@PφNkL:D&~Ր1˖YPupdEqD_\7x^jT[Td+\-fSEӉ<B󕱀#_}(-5EB#r?sCUQj/x0k.2SU( VL5n՘)d55\i˅Tqꓙ^+! D_ɳPcPW+ V>)8Pxj@͊	@D_*Hn08ʟ+~2KQbJSYsPb,+Wul3íte By|UR熢i.}0X0zl3X1T͕0sp2CN=NY2W.g2(ػ@F7TiDW>4<ryD~U|B̖XDMUjlg|	LdرoڬvQ^ÈAS"_\^S2K^e 4%Ɩꔆ3?''8bAx6}ֆ?p1^Ʌ<ӕu	6HR_@n(z1	肭xg!H*Q&<mXR02yJB*3(@9_f]uHRh"xlb:wyh#"X`44[!!D{cbh+Ym2 +7s,LMk}Q2Y`a|5;_̕}n;&H&DSP8f4ǔ4	2>;M;X QD˴!0 h {I5&0@SfY,'&W$]r}:bS٥>aMZ-t2oy|&ɇЋ7GQelV"9oТʃ:	
+r6D{1NOu  ߇1][!~?:2R_$+q-	<}"K9WDsyno>qDRW\zQġ.fe3aiUB*d'oGGX7yiOr/qaQ"GIqRrƙ4\MN< loONXBG=$uf4Q9aW21a
+U=M\F{&{SvE NG,-<#O;!A?Kpg'L8b,>`<+?ZЮ*0cN1
+R7LC9?!ܖ 5ocɫWcR&;L2gHo (H~ZlR֢qޒ2:}r!h;x΁yDX[2:,bg$Z&oyobdA,uI:b9B4ѕSdP4QcvMOڇm(pxg3N)	=wTZQz@xFJ=;Bl>3GĜS _q]'Ǳ^>WGSvxyq̈O~ϯI|7Ci+p6`#vŵMYU[''\AÎe^մ,[h2w`^i;4NFIi;	ؚ楋BJ,ѐncѻoȿdˮxl(}xwITdّ~%y7`OgK'ކzm9gc%yn+XI?~Yہ+E5n2nTm6so6Հ]>?o*;(pI!hIiIPdҲVj\Hw-nBgҳvUoEi	T	f4S:@tGA>t`?"{ld4U7шfnXLri_x'9xc16pM7ލp;hhY`ޟ50`?qARG!7bؚuG#omްoOU\UKKkΉ*Mn(P:kKQQ8.e&=*:GUEh,UkB~5+ K2v#-5@:" ?.pM!5#]6#V3ah"jg{\T-q..imabF샀da4^j'Qւ]p_t
+U١@Om{?AQol1-6d0] vflm;a0OLQ4WK{+
+>T}.Ǯ˾P)\%_8ӹjZQ-v"D> -U>:j»VN	k</VmoH_1U:%/4`+aNUa]beq~38-Iw3<3;?EK.۬n܃7''9y"Ϣ(J#|?4G@fVP%[:m"IUYe<䲈^yTTse]Z@\0I:M 
+QӲ	,
+y&P΢dKo<IOi(ռ`9mH2A*12BM-m5JLcaTh&	8O6Xa8ҹ(`Q[4l0d'BPx9yEo "ѠyT"2X ]8J+RK6y4Dlrj,TCdDP#a&DঠA.sY
+dBIb;7*EwXfj!b3M
+jj4Z@]צ GwmfC7X痃c3? ӵq}.zÃ{{gA |8r8a tCk9c VCe52otC02[c	i4G^Ry`9&2i`\`W!3cL.5a6RfO$8=32!"rmḴ!І:T$k!.*ZWb)8^ i>jqI?n|<
+PkTmk=Wby\c]=I8P@+l[bT3l%.t%s-F]tk< ^61ECnc]Z`WWƺ%P^ckPߜE	:V&LF^x
+}~F9ja컁<É+ͨTu3Q|nHߝ
+dQ+%4ٲHp<3	XȢl ":5>%sΚpℇ~4 P;|3q+]%prw{mke/_y$뚒/MI@,hlq˶GY6){hUd=:vYwqjp^LLl_:oiRr0޽]~-b02st]ZU۟RSeo>͐K\'ig?~#.\#W!mz`Re.Y! w:XQ{p¯킾.qAПaCp`<](0-{JFmO|vfÍ0hWQx
+Bn+:jcv펬~VeZW˰u=: X[o~ϯEZ<\v󰓝`'lH6V0xiH6~!tW_Uץۿ}x8<e.#}/3K8b,_Ǡ%d\G=-y<2ĲE K"($L,R$,{UE~iE4+2&8lxy#d郈!c9Hn!LHTJkxAtIi҅џ!Yet4!h"BBS7DVh5X6h
+d"Qk*?ྤ(<,/6Ni8BL֜52,I_eEJ3,9%zO"\3e0!^$1aeDd14N3!
+ʾ+)Mʚ'N+ӳ {iO	qт; ]gby>	=Z.xcFk{}1wlC9l=;=;bh8dKjV2S9~5Gcfdq&M^`|]rqbcǴ/{vftzN%d͑cY<{yc3nmz#ӻV."uh4ԈmxYDܝ,\w"[ޥ=p\_n[C4CZG.h?²gyy`
+#LMԞX33	bWmVL3)>p%*393̱ϬآUlld4V>y)Kȗ*%0"v>_ϫa=TV&VlHgXʭDzhM cGLb4'_KTA;sh)ѰkГ$xqR`/L-i a?He8y}F]C%s
++8$r f2f,nJGbUjKZƮ 1w"|yU<溜;v/JHɱ&
+%Ꮔd(Bon6qu<ˣrO]
+*;-όp7xn4~ĎwBQ_Pt7FtFT!ЎjrvGLB	? TyY	[<Bjb>M9#+~P}Ȧ]zQA%;!#	<Gʜ%!R
+J4wKM
+׾)sO*:FK<羀=q
+gYƞ>M/,H:Bri_p+t uavbh4KfG!kCOdsu'rN~xK3o&_ހ0j馺nQQc.4zP]5ڴԷ\+qtꩲ_fcXS:zwG ;	"9CnKFW`XŨZmD˯Er/injII|mu}س
+X6#IwpޱlT8ꚈrAĚ*֙ўtj**ۤ9<\5Yqq.ZԤZ;J3]CS9`;fع[^,^|)5s_+>-$i+t[	cc=e=.8Lߧe飄HrX[|8nQ-ӯIǝV5Yj+J'M55|P=J,R*W՝hE+؋s_[ta7F8U%D䲻kUIHTYxg*ޯ*xKbTqkVY3QH>ϔ݃Ʀ9'v垡հՍFgݎ2m7x {f硾1&n]ZwIohwުvշ7g'!W#=Q~9wێ$ߍKf\7>A%r>U]14yY` *(wpl"TyYM-4cW	4 Z4#_2a]^OEr7P5 UQo6~8yp5
+aKׅh,y"BhG,z wYuۡ/Ӄ-atsu5+E%۟~k	*?Kx.M
+\-OukJdQF)UY]@k$5\MYgJeJ6WE-x3R˦z*|i$Tz..Jg\^6yWmO*WzzZlWVMKCt)ThqfͫK}l0@V["Z{Y7Nop_:hgeVsуB%Ft֧;ZHRDlm$D4J3e	LW IlGآSĨmЃmf2}>m۫͘A%b8x*V$$~``F#?^6a@$
+p5	"ƅ7cwxF5Џ˄rqlaDQ0X4 1-@O{5`?O2a!kuDd3N1%%IӐ$i&˘S%!a\#F7+"Z	Ed.VvzQG$zg~XI֮BEdNHa3Ա	]XBt0)i| .$x֎(}rfX,4Iҥ`qt"P!dJ0:pZǑŊŵb`5Ql#VbYQO1(":ٌF>ƭ뒯fNmnӐ[:hgm-)Yk	TWyϏ'埳ǊTV3q4~ N8F@}v|oFn i	Qr)=m{4A8Pv8k!.jKo0%!w'wFg{(Ucx<nNYöswg~3*γ)Oy`\!COp軹*_&wCLvyras}mu}_[;j_~u:Sn0Mݽ[JSڪʂ["9Ii(e!exxR
+$;V#|H5y~ i\\11<6$~q.Y820Rw͆1a%8wWnpe2ag%/`E!M(o~s6ۍBipbbR΀OV΂	=*ES?KJOXs+MNb/[F5ֶF%>>9KޗY7͋לJª?Ax#f6wfU.eݻS#kdXZR[obנ]3_([Ys8~@Rޑd󰶕	-1dI+Rɸ`eTnD0}efD/4nmqXzn#`q1iN[lOɁW4#}sF?aoF4MM#:s8tϖgdQ$
+ᔲ/gw<Fn!,c2f;u<nY;?x^pd3EӜƻ^[DTi0e="[,ƦS~SqnH܈xYA+:wNM6 UKX;[Il1sz:n@u( 6p`hb/Μb9J缂0J;wb %)2bJp$=DC,hAg1|hQ$Xb7}d=]KN dd~9Ѡ5F]ڷG=߲mzGeÞ	@Hۦaiwz9I<6mW͐t&Crl:G=>aRMAN6;>BNh8&vMc	j\b|56^Oj1!PV?\5GFF_#(ӈ54:&0~7"}t,2;:h']X66*x3ǨYY6m/Ay2F_͎ab[Bl]v^f}0L219	C׃>5 _t
+|;2;{A1:NGwX-RT-KƗwl oeXhLiL.h>4ЍYcCKCw<'f!1ָsx?ʹ8t^wg	s,dӭ^FZZU"=@D?bX]д0TľTiv"ã!phpbuF]6ʴ'?44#pIedVؒ) ;ID6ffq3SԹaɌ:Cg'|g< A !էhpN<v^/2H˔&Cn;_xsP!㜣2Y~̎iCfFOgD!4:(ha\4R`P*faY8qJ.Hٸo/;^P`Akƣd0D٣;Գ.IB*Y<堈Tp wr#ʹ:\X;LB7Dԉ	8GP]Siu*NshFcOF28i-7Áb[ҝdLsƛ{zlu֜K ;D13OU^%(:*]A KV/	TPBe,0*b<>Xsn|*8r+ |q$ z98gK5YhG;3dЙCd.4ܫesG4ZzмUQɚen~z\%ճC D:W	SM^1lCҍO4!*[;\d9ſ'I..L]ʒqD+ ߿/:3]!ez5VI^#`i=z_~ɸ@C=v12$%>NB#RZA>灲ұCRp.^R߸ _Ue]I
+҉8`9~jP-#ZH|x$o`jb`IgE^gxd	A8
+5H1zOha{!We$"ve24ɡ%M	i!T5AT"J'{d)YXWƪ|!&r|ǦeK):P/*0Xz )WYj@[
+#bmE쓆-qc		+bbdgv=q8i?i}*ex&k$da360N/* zG%RmyN*$aL/9M"!IܨA 1]1q%spX09Ǹ㶫:6_Veĕ	rR@|;wՃ\3[#i1*Fk)(D?uɢ3:j8Uk^5;R%ɪ*UsQb/C5U"bSЪ"f?_uR+()]`kF-_t0CKﰴ%[C6\vA1;ԆkŭͷJqPeeTk𔝶ERҤy@Rjg%I_je=q8iY;ֲQ~*$+pBzN!}͜@K&՘b4ʆu璂]EZ%F$):(|gVjэG~?xuMS\ȮdEd'beR=,dy2~T1}RDBnTt)%\$U  O^#kY*x@>/YEdHv\k<0Н"oBʺ/-"`7QF6JzD9+F@qCAƟA.^$\hvV:$'щ#*pJ|rlm&ҷ`TN[E4N} +Y[eHU{xY]gWsՙj(C0= z*L:s5_"lђ?j^wYg'_G/҈|Y'-v;3y;M
+Z9}LE:_w$qAUGrVƋQ\;䝭8Tm.~'>
+~m_U֊Y-db#Mu%H4+qաei>5?}:aT0<^-YxH oٌÇ]c9a9ia>I#q:%n&>ke|"]=xCtˬnQ"	Åa\E<Wij-fnLtVܦG<+WiI8Th<w_Rqx;:b^Qڋ\I&VBOu!-ԒFkcr0Fa:kL@8&:v/
+:>*XI#$qDj]GǕ@{+6M1p+.M`'ȋ[~&>ٞ+[(?ǅ[5k|*X| _p^C_tMOs|/bnm˩\r5q`U! Ma\dERR+3e <JU+iqۑy8!92Rep^~yYo߄P27"<hCgu$2I7X}iZ(wY+8Č6*wط\Vju~^`}xيT`#]
+jH\!SC2`~p9PEwnFpG_4IOѾ矄&7<k~g/z?QAN0{ Q<= qArM6k[k!i"^dYkΌ~⑂ǖmoRtaR*<=xF&ȁ^P6}F6BGrEC gmA&Ap׆fSC^[8X~DX(D􉺥JHgO/\+yUc l1 .^v6' ˩Cjbl$B<®D	oēvcB2Tӧ-ɶYScVGRn0+% 7!cdvh&i6P4̼Y8>Q`B-H.=l56<%Xa#U1s5x
+QL7Qe0)D36=SX4F5,+P0ܐ@4WjZF׭+qF
+bݖR(&1:iMCe{,O''yuWAxƚ&;; "25\´K&Un\)SnhYkfp%NwyF0$V>Q=ni'wn+'6O\f^c_,3(N[E>9fiG8E>EAއYgEQ-k;e?T"5*bw],x?Xmo_qZʸIZ)Wd$A/d(,'k]s@.l9̙YoS7]q6iӧ>|:xFFA$\P|.8& )Rd"<"#gxGiBAR
+252 [4R(Qt<i4	@/pLBd(EH,}B Ǐ V/QH4	#֕Ji.u;%IBk)s0qSE4&B!"I1@lDV,ʓ8"F2XPWa".a8\$JH'[
+A.(.9*
+P˶&\V&nZnXc,5V4L:xHB욧u`PXGH)1a^B?bfLdMJ)<o,<ʿ7\p?p;gIo|q=Ȱ{}}@<r\n}X5l2=,,Z';>[ˇ; rt7x4:VWoWX֠Vw7m0tg۳n߰n1dޙOލ7zgʮ^,ؾNZ|ci3}z}B23nkUV';t[v*a-t8=tאַ]PT c!yH"qzǳlt#b BO߱>06FG㠃-L!],c8uߺ6ɳ[Rϵ<F`PɄurYZxKD3ް{Hu'}]QA؟zZ~䣯1m"uG'oT#Ⱦ()>(^	jʛI0pA , edS<0$V 5jB(6mcLh02x_΂n"xeȝV*·Zts1.94}H}܊4]&F8pѪHƷTW>#$aZ~nywG[B21%J,%O;[]$6JF*})""|hx|,}Dw+yaC#{TD,:ė|D%qEOIp[hZ:*q:R-F}j[C +CAnymk/UU7hG\]_Yg[xd8s9ՎQ,XrPʝ|#I%O%y^dEU4ecNwo/բ/s
+8컨VAw)ZQ{EB,uD.j)%~)G"YuQH8He<Z 
+UvڂF峹=PXo12{f=|J5`(,9xq(uBno-Q	BSDx\cU/UQ
+t0_M;><^fE0iuQ
+$^<J~-z7#(J'Q.F%&O9f<c+e ϻch܎?}Q2SL^6հC:|kqݹyY ;̫jmvQ!Cxa[dccߋޙrv''dIԑ񷲕jDǟ!3W
+Yn6cdNGR@}usdW*@2t<W_g ۞Ɵo{g5"盿M
+1D-,/PN+Lp݄dܿSYv1F6wXa]@\4Pem(>o#Ɓgr&oa,l+JnYJI2CCZ~l:$Y-TFZ~UgyWmoH_QEk<bM6m#<hoeaNi h5j`]ޞ?}߼g?䤭۷24䳐yF?xB񞵍8&"<:o"\F"҄$"%\	@>:L(Tߴi:Zl@gri+(CS*M2*.:-t]JCHY<y`lLyf*Ih%A$(AvuFȳoD-^h6,UXtUlD+kP<G^RHQgMTvHTDJe`#8N%iURՁlgZ
+.$ II$!6b٤&$ʑ(ujemŊWJB˲by9Wᚄ|昆w4i\zıǦ1cup;X81<hÃ=czG槙kz9.Y73ۂ=8poNtdZ'Pl:>֍Cw2429Wtc	^e[zeSx׷Fspl$8mX7a/ͩOİMkmtc5G>#kFA:y3sd"ýS˞9OcƸFCPNh7sŦ-t8cżg]xgp:
+X6sbؖ5Mם|˙@-BǊkg0,ǽcLJNHTb&`:<8ے
+>X׶umNG&:ĺ*-X*<g*i|lRK_
+ #VU>XI~}2>l^2pb4zPIu^7Q>4]K>I"zcWlz dA?{=VQӑTQ{pK\ɗ"DQ}s%@k#/_Bu~쳌<EMYv5 VX觧ز@DvqL`ȣ5wԯ%vOKEdC`!uہt9uZMC"YJ&qf><\~|ߦY!0>gaTzDKe"HJ_f֔ TU\~ƓPc9Õ'4_\/YeotK\iJM)6XY~զO}"i.6YȤHN| pdbqIk%>л󓳚 e,_b61\;;;J"~2*lqG:Hr+6|,>,qgDE<,iࢣv,ܐ֥A/w=]fV.SLiV^/布cl@|YGLmy?QGXJ|]&ɡoMurE\lǨpBH/Qj{:.M/*Ƶ9,*A\pND!)q3AdBa$QEL+QNsΠj@lA=v5K rc"hā7ڬBLrn1:LADuECT|g,C>(tJ]( ƉJыI$@烆\Boyߋ]:Z^	!_kN=r)izԖ^~V]O8}W\!F-(|,>,̒&Z
+I7N`*ąhҸJRXPʈCs9|: G͟~O'';U)iP$OY55}MпL~o PS%kY=h5׆2'&W%%eFZR^RU*$/Ꙧ=EC3<M4&fyȌz34VQTYfL6gIM[ʰjQ7$ ᓉzSjTZkDBX^SP%Qf9-|&M1_-38-$G+J3Y6fCX|}Sh4ʓ^oXM/scd&5ɍ,z^Xb%4L,3H]_5Su@%LSL,մyBt۲2uJb,ʺޢ,rA"nڣ0.si0$#'C~5hx.پQ?
+ +w__@؏QȄ $~=80$3a/vepAD"ZSd[ (k:Ctx46/y묗Hk#Ğh8rx6f ?G$mU1]-老=2-Ļ<dNU[|Y"1bA_b=2WXĐk_W0l-qNk- lD<Uf7o9y0FƂYHٖ\4ڃXpga<xÔ[86\0/[cǢ!8=GT'F#;<:gWbln`rĭl&8.̖$۽Z2\_fDW;&]̓gr/u_${Kx?+Mv>-?GN۲6%o}xǜ\")zBV
+cp5J&~p<xZ)=B{y'p16n(Ssf.u|JZӳ5%f~6Ci4ك;@՞oBN/|[Ko[O2<Ƴ,ww8
+>ٻ dj6ӷp&׈äxJk4<c<.Eѳho~<4Xn=HV5/FߎsfQkϔ/J-U
+/dB=:ZezS|GK/Qg%]Lf~o[N7wlmJ@y9Т5]!PjhzDa7NM鰇͟onE9<VVi$N1nbj?ĕO=W*nAY0 wmZ+UўpԽH[ϪVz_:'ImFkOp1!κs;eYeQbzӶèfi\89Z:ӼFo\skӲljrp=TezL[*v0*]OAj0{XܓbAn"l
+(@UI&w\vawf_Dh.zNyiIc6^u-5Z8𪁫!^:=>0֊2q8YVUW5.5-^sކȭT?{ǥ䱜߽bsvX`<ۦ%0},ryn[FYw&X8&b|5,/hIPmJ0s!l>.Z
+Ŋ Ld;t!C9szwSIW!.S^8#41 |9pʁu4n-igi.2r]FÏ @t%؀c63ZS;:,-*y^+,yr}_hvC7ǧ!<~dwT6l|ۋ0fz8j<:[_hu9^G9Y%~mj0y
+vH`K=6=&VRS[wliÏ>IݱKxT$N5G1D
+"0 z-E(	p҂(%UlVa<KjzS&>r'A%^\zAմpN|UUUYq)!	.iI
+;iL{6OwxØl]샛O3η]5gm垕l%fd]Mk09P`wz(vfxXNjqy<}6g9};ɭRKK"kCs	C^50 `mfw.֊+yVUUU}Ɠ6*GP>K؜]V`})=Fҷ:?CVRF/f[PH<1!|5ώ,/hIpmJ0E l~.Z
+Ŋ Ld*;␇K̽aru=hJeI_:S}G'w:
+a@Ld4E(a iX~2)km*ݳ:-O3.OT%z؁ff:Ήx%8,+Ӻ.adv?=hMzkrmRmZ߉QaA
+:'t&6.򇦨YuA
+@Es\@@BQpgCh8PSo{?벆T$OBXiYP|Q~3jfK3,n>HAԀXH)q8<B /(PW(,V <ҒԼԢĒ̜T]|Ԕx7OW p	w ihZs 1e$=\;D6UX눎kl=Sqy͠y}b(ѳ}ȯ   GBMB
\ No newline at end of file
diff --git a/vendor/phpunit/phpunit/build/phar-autoload.php.in b/vendor/phpunit/phpunit/build/binary-phar-autoload.php.in
similarity index 77%
rename from vendor/phpunit/phpunit/build/phar-autoload.php.in
rename to vendor/phpunit/phpunit/build/binary-phar-autoload.php.in
index 165f9ba..75cdccb 100644
--- a/vendor/phpunit/phpunit/build/phar-autoload.php.in
+++ b/vendor/phpunit/phpunit/build/binary-phar-autoload.php.in
@@ -1,15 +1,12 @@
 #!/usr/bin/env php
 <?php
 if (__FILE__ == realpath($GLOBALS['_SERVER']['SCRIPT_NAME'])) {
-    $phar    = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']);
     $execute = true;
 } else {
-    $files   = get_included_files();
-    $phar    = $files[0];
     $execute = false;
 }
 
-define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', $phar));
+define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__));
 define('__PHPUNIT_PHAR_ROOT__', 'phar://___PHAR___');
 
 Phar::mapPhar('___PHAR___');
@@ -27,7 +24,7 @@ if ($execute) {
     }
 
     if (isset($_SERVER['argv'][1]) && $_SERVER['argv'][1] == '--manifest') {
-        print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/phar/manifest.txt');
+        print file_get_contents(__PHPUNIT_PHAR_ROOT__ . '/manifest.txt');
         exit;
     }
 
diff --git a/vendor/phpunit/phpunit/build/library-phar-autoload.php.in b/vendor/phpunit/phpunit/build/library-phar-autoload.php.in
new file mode 100644
index 0000000..f919b76
--- /dev/null
+++ b/vendor/phpunit/phpunit/build/library-phar-autoload.php.in
@@ -0,0 +1,9 @@
+<?php
+define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__));
+define('__PHPUNIT_PHAR_ROOT__', 'phar://___PHAR___');
+
+Phar::mapPhar('___PHAR___');
+
+___FILELIST___
+
+__HALT_COMPILER();
diff --git a/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php b/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php
index 1bd4f14..e448897 100644
--- a/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php
+++ b/vendor/phpunit/phpunit/src/Extensions/GroupTestSuite.php
@@ -14,6 +14,7 @@
  * We want a TestSuite object B that contains TestSuite objects C, D, ...
  * for the Tests tagged with @group C, @group D, ...
  * Running the Tests from TestSuite object B results in Tests tagged with both
+ *
  * @group C and @group D in TestSuite object A to be run twice .
  *
  * <code>
diff --git a/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php b/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php
index 8ebb908..4ac8fd8 100644
--- a/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php
+++ b/vendor/phpunit/phpunit/src/Extensions/PhptTestCase.php
@@ -50,7 +50,8 @@ class PHPUnit_Extensions_PhptTestCase implements PHPUnit_Framework_Test, PHPUnit
     /**
      * Constructs a test case with the given filename.
      *
-     * @param  string                      $filename
+     * @param string $filename
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($filename)
@@ -84,7 +85,8 @@ public function count()
     /**
      * Runs a test and collects its result in a TestResult instance.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
      */
     public function run(PHPUnit_Framework_TestResult $result = null)
@@ -177,6 +179,7 @@ public function toString()
 
     /**
      * @return array
+     *
      * @throws PHPUnit_Framework_Exception
      */
     private function parse()
@@ -205,7 +208,8 @@ private function parse()
     }
 
     /**
-     * @param  string $code
+     * @param string $code
+     *
      * @return string
      */
     private function render($code)
@@ -227,6 +231,7 @@ private function render($code)
      * Parse --INI-- section key value pairs and return as array.
      *
      * @param string
+     *
      * @return array
      */
     protected function parseIniSection($content)
diff --git a/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php b/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php
index 8959cfc..f21509b 100644
--- a/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php
+++ b/vendor/phpunit/phpunit/src/Extensions/PhptTestSuite.php
@@ -18,7 +18,8 @@ class PHPUnit_Extensions_PhptTestSuite extends PHPUnit_Framework_TestSuite
     /**
      * Constructs a new TestSuite for .phpt test cases.
      *
-     * @param  string                      $directory
+     * @param string $directory
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($directory)
diff --git a/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php b/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
index d98afd0..152bffc 100644
--- a/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
+++ b/vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
@@ -26,9 +26,10 @@ class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator
     protected $timesRepeat = 1;
 
     /**
-     * @param  PHPUnit_Framework_Test      $test
-     * @param  int                         $timesRepeat
-     * @param  bool                        $processIsolation
+     * @param PHPUnit_Framework_Test $test
+     * @param int                    $timesRepeat
+     * @param bool                   $processIsolation
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $processIsolation = false)
@@ -63,8 +64,10 @@ public function count()
      * Runs the decorated test and collects the
      * result in a TestResult.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function run(PHPUnit_Framework_TestResult $result = null)
diff --git a/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php b/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php
index 3a50988..1f1530f 100644
--- a/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php
+++ b/vendor/phpunit/phpunit/src/Extensions/TestDecorator.php
@@ -92,7 +92,8 @@ public function getTest()
      * Runs the decorated test and collects the
      * result in a TestResult.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
      */
     public function run(PHPUnit_Framework_TestResult $result = null)
diff --git a/vendor/phpunit/phpunit/src/Extensions/TicketListener.php b/vendor/phpunit/phpunit/src/Extensions/TicketListener.php
index 5148306..e282f8b 100644
--- a/vendor/phpunit/phpunit/src/Extensions/TicketListener.php
+++ b/vendor/phpunit/phpunit/src/Extensions/TicketListener.php
@@ -64,6 +64,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -76,6 +77,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -86,6 +88,7 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time
      * A test suite started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -96,6 +99,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
      * A test suite ended.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -184,7 +188,8 @@ public function endTest(PHPUnit_Framework_Test $test, $time)
     }
 
     /**
-     * @param  mixed $ticketId
+     * @param mixed $ticketId
+     *
      * @return mixed
      */
     abstract protected function getTicketInfo($ticketId = null);
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert.php b/vendor/phpunit/phpunit/src/Framework/Assert.php
index 4da7cff..1e1125d 100644
--- a/vendor/phpunit/phpunit/src/Framework/Assert.php
+++ b/vendor/phpunit/phpunit/src/Framework/Assert.php
@@ -26,6 +26,7 @@
      * @param mixed             $key
      * @param array|ArrayAccess $array
      * @param string            $message
+     *
      * @since Method available since Release 3.0.0
      */
     public static function assertArrayHasKey($key, $array, $message = '')
@@ -56,6 +57,7 @@ public static function assertArrayHasKey($key, $array, $message = '')
      * @param array|ArrayAccess $array
      * @param bool              $strict  Check for object identity
      * @param string            $message
+     *
      * @since Method available since Release 4.4.0
      */
     public static function assertArraySubset($subset, $array, $strict = false, $message = '')
@@ -85,6 +87,7 @@ public static function assertArraySubset($subset, $array, $strict = false, $mess
      * @param mixed             $key
      * @param array|ArrayAccess $array
      * @param string            $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertArrayNotHasKey($key, $array, $message = '')
@@ -119,6 +122,7 @@ public static function assertArrayNotHasKey($key, $array, $message = '')
      * @param bool   $ignoreCase
      * @param bool   $checkForObjectIdentity
      * @param bool   $checkForNonObjectIdentity
+     *
      * @since  Method available since Release 2.1.0
      */
     public static function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -163,6 +167,7 @@ public static function assertContains($needle, $haystack, $message = '', $ignore
      * @param bool   $ignoreCase
      * @param bool   $checkForObjectIdentity
      * @param bool   $checkForNonObjectIdentity
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -186,6 +191,7 @@ public static function assertAttributeContains($needle, $haystackAttributeName,
      * @param bool   $ignoreCase
      * @param bool   $checkForObjectIdentity
      * @param bool   $checkForNonObjectIdentity
+     *
      * @since  Method available since Release 2.1.0
      */
     public static function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -234,6 +240,7 @@ public static function assertNotContains($needle, $haystack, $message = '', $ign
      * @param bool   $ignoreCase
      * @param bool   $checkForObjectIdentity
      * @param bool   $checkForNonObjectIdentity
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -255,6 +262,7 @@ public static function assertAttributeNotContains($needle, $haystackAttributeNam
      * @param mixed  $haystack
      * @param bool   $isNativeType
      * @param string $message
+     *
      * @since  Method available since Release 3.1.4
      */
     public static function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '')
@@ -317,6 +325,7 @@ public static function assertContainsOnlyInstancesOf($classname, $haystack, $mes
      * @param mixed  $haystackClassOrObject
      * @param bool   $isNativeType
      * @param string $message
+     *
      * @since  Method available since Release 3.1.4
      */
     public static function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '')
@@ -336,6 +345,7 @@ public static function assertAttributeContainsOnly($type, $haystackAttributeName
      * @param mixed  $haystack
      * @param bool   $isNativeType
      * @param string $message
+     *
      * @since  Method available since Release 3.1.4
      */
     public static function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '')
@@ -374,6 +384,7 @@ public static function assertNotContainsOnly($type, $haystack, $isNativeType = n
      * @param mixed  $haystackClassOrObject
      * @param bool   $isNativeType
      * @param string $message
+     *
      * @since  Method available since Release 3.1.4
      */
     public static function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '')
@@ -420,6 +431,7 @@ public static function assertCount($expectedCount, $haystack, $message = '')
      * @param string $haystackAttributeName
      * @param mixed  $haystackClassOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.6.0
      */
     public static function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -465,6 +477,7 @@ public static function assertNotCount($expectedCount, $haystack, $message = '')
      * @param string $haystackAttributeName
      * @param mixed  $haystackClassOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.6.0
      */
     public static function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -535,6 +548,7 @@ public static function assertAttributeEquals($expected, $actualAttributeName, $a
      * @param int    $maxDepth
      * @param bool   $canonicalize
      * @param bool   $ignoreCase
+     *
      * @since  Method available since Release 2.3.0
      */
     public static function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -580,8 +594,9 @@ public static function assertAttributeNotEquals($expected, $actualAttributeName,
     /**
      * Asserts that a variable is empty.
      *
-     * @param  mixed                                  $actual
-     * @param  string                                 $message
+     * @param mixed  $actual
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertEmpty($actual, $message = '')
@@ -596,6 +611,7 @@ public static function assertEmpty($actual, $message = '')
      * @param string $haystackAttributeName
      * @param mixed  $haystackClassOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -609,8 +625,9 @@ public static function assertAttributeEmpty($haystackAttributeName, $haystackCla
     /**
      * Asserts that a variable is not empty.
      *
-     * @param  mixed                                  $actual
-     * @param  string                                 $message
+     * @param mixed  $actual
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertNotEmpty($actual, $message = '')
@@ -625,6 +642,7 @@ public static function assertNotEmpty($actual, $message = '')
      * @param string $haystackAttributeName
      * @param mixed  $haystackClassOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -641,6 +659,7 @@ public static function assertAttributeNotEmpty($haystackAttributeName, $haystack
      * @param mixed  $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertGreaterThan($expected, $actual, $message = '')
@@ -655,6 +674,7 @@ public static function assertGreaterThan($expected, $actual, $message = '')
      * @param string $actualAttributeName
      * @param string $actualClassOrObject
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -672,6 +692,7 @@ public static function assertAttributeGreaterThan($expected, $actualAttributeNam
      * @param mixed  $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertGreaterThanOrEqual($expected, $actual, $message = '')
@@ -690,6 +711,7 @@ public static function assertGreaterThanOrEqual($expected, $actual, $message = '
      * @param string $actualAttributeName
      * @param string $actualClassOrObject
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -707,6 +729,7 @@ public static function assertAttributeGreaterThanOrEqual($expected, $actualAttri
      * @param mixed  $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertLessThan($expected, $actual, $message = '')
@@ -721,6 +744,7 @@ public static function assertLessThan($expected, $actual, $message = '')
      * @param string $actualAttributeName
      * @param string $actualClassOrObject
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -738,6 +762,7 @@ public static function assertAttributeLessThan($expected, $actualAttributeName,
      * @param mixed  $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertLessThanOrEqual($expected, $actual, $message = '')
@@ -752,6 +777,7 @@ public static function assertLessThanOrEqual($expected, $actual, $message = '')
      * @param string $actualAttributeName
      * @param string $actualClassOrObject
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -772,6 +798,7 @@ public static function assertAttributeLessThanOrEqual($expected, $actualAttribut
      * @param string $message
      * @param bool   $canonicalize
      * @param bool   $ignoreCase
+     *
      * @since  Method available since Release 3.2.14
      */
     public static function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -799,6 +826,7 @@ public static function assertFileEquals($expected, $actual, $message = '', $cano
      * @param string $message
      * @param bool   $canonicalize
      * @param bool   $ignoreCase
+     *
      * @since  Method available since Release 3.2.14
      */
     public static function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -826,6 +854,7 @@ public static function assertFileNotEquals($expected, $actual, $message = '', $c
      * @param string $message
      * @param bool   $canonicalize
      * @param bool   $ignoreCase
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -852,6 +881,7 @@ public static function assertStringEqualsFile($expectedFile, $actualString, $mes
      * @param string $message
      * @param bool   $canonicalize
      * @param bool   $ignoreCase
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -874,6 +904,7 @@ public static function assertStringNotEqualsFile($expectedFile, $actualString, $
      *
      * @param string $filename
      * @param string $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertFileExists($filename, $message = '')
@@ -892,6 +923,7 @@ public static function assertFileExists($filename, $message = '')
      *
      * @param string $filename
      * @param string $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertFileNotExists($filename, $message = '')
@@ -910,8 +942,9 @@ public static function assertFileNotExists($filename, $message = '')
     /**
      * Asserts that a condition is true.
      *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
+     * @param bool   $condition
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertTrue($condition, $message = '')
@@ -922,8 +955,9 @@ public static function assertTrue($condition, $message = '')
     /**
      * Asserts that a condition is not true.
      *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
+     * @param bool   $condition
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertNotTrue($condition, $message = '')
@@ -934,8 +968,9 @@ public static function assertNotTrue($condition, $message = '')
     /**
      * Asserts that a condition is false.
      *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
+     * @param bool   $condition
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertFalse($condition, $message = '')
@@ -946,8 +981,9 @@ public static function assertFalse($condition, $message = '')
     /**
      * Asserts that a condition is not false.
      *
-     * @param  bool                                   $condition
-     * @param  string                                 $message
+     * @param bool   $condition
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function assertNotFalse($condition, $message = '')
@@ -983,6 +1019,7 @@ public static function assertNull($actual, $message = '')
      * @param string $attributeName
      * @param string $className
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertClassHasAttribute($attributeName, $className, $message = '')
@@ -1012,6 +1049,7 @@ public static function assertClassHasAttribute($attributeName, $className, $mess
      * @param string $attributeName
      * @param string $className
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertClassNotHasAttribute($attributeName, $className, $message = '')
@@ -1041,6 +1079,7 @@ public static function assertClassNotHasAttribute($attributeName, $className, $m
      * @param string $attributeName
      * @param string $className
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertClassHasStaticAttribute($attributeName, $className, $message = '')
@@ -1070,6 +1109,7 @@ public static function assertClassHasStaticAttribute($attributeName, $className,
      * @param string $attributeName
      * @param string $className
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertClassNotHasStaticAttribute($attributeName, $className, $message = '')
@@ -1101,6 +1141,7 @@ public static function assertClassNotHasStaticAttribute($attributeName, $classNa
      * @param string $attributeName
      * @param object $object
      * @param string $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertObjectHasAttribute($attributeName, $object, $message = '')
@@ -1130,6 +1171,7 @@ public static function assertObjectHasAttribute($attributeName, $object, $messag
      * @param string $attributeName
      * @param object $object
      * @param string $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertObjectNotHasAttribute($attributeName, $object, $message = '')
@@ -1239,6 +1281,7 @@ public static function assertAttributeNotSame($expected, $actualAttributeName, $
      * @param string $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertInstanceOf($expected, $actual, $message = '')
@@ -1261,6 +1304,7 @@ public static function assertInstanceOf($expected, $actual, $message = '')
      * @param string $attributeName
      * @param mixed  $classOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '')
@@ -1278,6 +1322,7 @@ public static function assertAttributeInstanceOf($expected, $attributeName, $cla
      * @param string $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertNotInstanceOf($expected, $actual, $message = '')
@@ -1300,6 +1345,7 @@ public static function assertNotInstanceOf($expected, $actual, $message = '')
      * @param string $attributeName
      * @param mixed  $classOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '')
@@ -1317,6 +1363,7 @@ public static function assertAttributeNotInstanceOf($expected, $attributeName, $
      * @param string $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertInternalType($expected, $actual, $message = '')
@@ -1339,6 +1386,7 @@ public static function assertInternalType($expected, $actual, $message = '')
      * @param string $attributeName
      * @param mixed  $classOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '')
@@ -1356,6 +1404,7 @@ public static function assertAttributeInternalType($expected, $attributeName, $c
      * @param string $expected
      * @param mixed  $actual
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertNotInternalType($expected, $actual, $message = '')
@@ -1378,6 +1427,7 @@ public static function assertNotInternalType($expected, $actual, $message = '')
      * @param string $attributeName
      * @param mixed  $classOrObject
      * @param string $message
+     *
      * @since Method available since Release 3.5.0
      */
     public static function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '')
@@ -1417,6 +1467,7 @@ public static function assertRegExp($pattern, $string, $message = '')
      * @param string $pattern
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 2.1.0
      */
     public static function assertNotRegExp($pattern, $string, $message = '')
@@ -1500,6 +1551,7 @@ public static function assertNotSameSize($expected, $actual, $message = '')
      * @param string $format
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function assertStringMatchesFormat($format, $string, $message = '')
@@ -1523,6 +1575,7 @@ public static function assertStringMatchesFormat($format, $string, $message = ''
      * @param string $format
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function assertStringNotMatchesFormat($format, $string, $message = '')
@@ -1548,6 +1601,7 @@ public static function assertStringNotMatchesFormat($format, $string, $message =
      * @param string $formatFile
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function assertStringMatchesFormatFile($formatFile, $string, $message = '')
@@ -1571,6 +1625,7 @@ public static function assertStringMatchesFormatFile($formatFile, $string, $mess
      * @param string $formatFile
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function assertStringNotMatchesFormatFile($formatFile, $string, $message = '')
@@ -1596,6 +1651,7 @@ public static function assertStringNotMatchesFormatFile($formatFile, $string, $m
      * @param string $prefix
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function assertStringStartsWith($prefix, $string, $message = '')
@@ -1621,6 +1677,7 @@ public static function assertStringStartsWith($prefix, $string, $message = '')
      * @param string $prefix
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function assertStringStartsNotWith($prefix, $string, $message = '')
@@ -1646,6 +1703,7 @@ public static function assertStringStartsNotWith($prefix, $string, $message = ''
      * @param string $suffix
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function assertStringEndsWith($suffix, $string, $message = '')
@@ -1669,6 +1727,7 @@ public static function assertStringEndsWith($suffix, $string, $message = '')
      * @param string $suffix
      * @param string $string
      * @param string $message
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function assertStringEndsNotWith($suffix, $string, $message = '')
@@ -1694,6 +1753,7 @@ public static function assertStringEndsNotWith($suffix, $string, $message = '')
      * @param string $expectedFile
      * @param string $actualFile
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '')
@@ -1710,6 +1770,7 @@ public static function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $m
      * @param string $expectedFile
      * @param string $actualFile
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '')
@@ -1726,6 +1787,7 @@ public static function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile,
      * @param string $expectedFile
      * @param string $actualXml
      * @param string $message
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '')
@@ -1742,6 +1804,7 @@ public static function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $
      * @param string $expectedFile
      * @param string $actualXml
      * @param string $message
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '')
@@ -1758,6 +1821,7 @@ public static function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml
      * @param string $expectedXml
      * @param string $actualXml
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '')
@@ -1774,6 +1838,7 @@ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml,
      * @param string $expectedXml
      * @param string $actualXml
      * @param string $message
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '')
@@ -1791,15 +1856,16 @@ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXm
      * @param DOMElement $actualElement
      * @param bool       $checkAttributes
      * @param string     $message
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '')
     {
-        $tmp = new DOMDocument;
+        $tmp             = new DOMDocument;
         $expectedElement = $tmp->importNode($expectedElement, true);
 
-        $tmp = new DOMDocument;
-        $actualElement= $tmp->importNode($actualElement, true);
+        $tmp           = new DOMDocument;
+        $actualElement = $tmp->importNode($actualElement, true);
 
         unset($tmp);
 
@@ -1885,6 +1951,7 @@ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOME
      * @param mixed          $actual
      * @param string         $message
      * @param bool           $isHtml
+     *
      * @since  Method available since Release 3.3.0
      * @deprecated
      * @codeCoverageIgnore
@@ -1913,6 +1980,7 @@ public static function assertSelectCount($selector, $count, $actual, $message =
      * @param mixed          $actual
      * @param string         $message
      * @param bool           $isHtml
+     *
      * @since  Method available since Release 3.3.0
      * @deprecated
      * @codeCoverageIgnore
@@ -1941,6 +2009,7 @@ public static function assertSelectRegExp($selector, $pattern, $count, $actual,
      * @param mixed          $actual
      * @param string         $message
      * @param bool           $isHtml
+     *
      * @since  Method available since Release 3.3.0
      * @deprecated
      * @codeCoverageIgnore
@@ -2128,6 +2197,7 @@ public static function assertSelectEquals($selector, $content, $count, $actual,
      * @param string $actual
      * @param string $message
      * @param bool   $isHtml
+     *
      * @since  Method available since Release 3.3.0
      * @deprecated
      * @codeCoverageIgnore
@@ -2153,6 +2223,7 @@ public static function assertTag($matcher, $actual, $message = '', $isHtml = tru
      * @param string $actual
      * @param string $message
      * @param bool   $isHtml
+     *
      * @since  Method available since Release 3.3.0
      * @deprecated
      * @codeCoverageIgnore
@@ -2174,6 +2245,7 @@ public static function assertNotTag($matcher, $actual, $message = '', $isHtml =
      * @param mixed                        $value
      * @param PHPUnit_Framework_Constraint $constraint
      * @param string                       $message
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '')
@@ -2188,6 +2260,7 @@ public static function assertThat($value, PHPUnit_Framework_Constraint $constrai
      *
      * @param string $actualJson
      * @param string $message
+     *
      * @since  Method available since Release 3.7.20
      */
     public static function assertJson($actualJson, $message = '')
@@ -2343,6 +2416,7 @@ public static function assertJsonFileEqualsJsonFile($expectedFile, $actualFile,
      * Returns a PHPUnit_Framework_Constraint_And matcher object.
      *
      * @return PHPUnit_Framework_Constraint_And
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function logicalAnd()
@@ -2359,6 +2433,7 @@ public static function logicalAnd()
      * Returns a PHPUnit_Framework_Constraint_Or matcher object.
      *
      * @return PHPUnit_Framework_Constraint_Or
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function logicalOr()
@@ -2374,8 +2449,10 @@ public static function logicalOr()
     /**
      * Returns a PHPUnit_Framework_Constraint_Not matcher object.
      *
-     * @param  PHPUnit_Framework_Constraint     $constraint
+     * @param PHPUnit_Framework_Constraint $constraint
+     *
      * @return PHPUnit_Framework_Constraint_Not
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function logicalNot(PHPUnit_Framework_Constraint $constraint)
@@ -2387,6 +2464,7 @@ public static function logicalNot(PHPUnit_Framework_Constraint $constraint)
      * Returns a PHPUnit_Framework_Constraint_Xor matcher object.
      *
      * @return PHPUnit_Framework_Constraint_Xor
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function logicalXor()
@@ -2403,6 +2481,7 @@ public static function logicalXor()
      * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsAnything
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function anything()
@@ -2414,6 +2493,7 @@ public static function anything()
      * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsTrue
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function isTrue()
@@ -2424,7 +2504,8 @@ public static function isTrue()
     /**
      * Returns a PHPUnit_Framework_Constraint_Callback matcher object.
      *
-     * @param  callable                              $callback
+     * @param callable $callback
+     *
      * @return PHPUnit_Framework_Constraint_Callback
      */
     public static function callback($callback)
@@ -2436,6 +2517,7 @@ public static function callback($callback)
      * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsFalse
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function isFalse()
@@ -2447,6 +2529,7 @@ public static function isFalse()
      * Returns a PHPUnit_Framework_Constraint_IsJson matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsJson
+     *
      * @since  Method available since Release 3.7.20
      */
     public static function isJson()
@@ -2458,6 +2541,7 @@ public static function isJson()
      * Returns a PHPUnit_Framework_Constraint_IsNull matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsNull
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function isNull()
@@ -2468,9 +2552,11 @@ public static function isNull()
     /**
      * Returns a PHPUnit_Framework_Constraint_Attribute matcher object.
      *
-     * @param  PHPUnit_Framework_Constraint           $constraint
-     * @param  string                                 $attributeName
+     * @param PHPUnit_Framework_Constraint $constraint
+     * @param string                       $attributeName
+     *
      * @return PHPUnit_Framework_Constraint_Attribute
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName)
@@ -2485,10 +2571,12 @@ public static function attribute(PHPUnit_Framework_Constraint $constraint, $attr
      * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher
      * object.
      *
-     * @param  mixed                                            $value
-     * @param  bool                                             $checkForObjectIdentity
-     * @param  bool                                             $checkForNonObjectIdentity
+     * @param mixed $value
+     * @param bool  $checkForObjectIdentity
+     * @param bool  $checkForNonObjectIdentity
+     *
      * @return PHPUnit_Framework_Constraint_TraversableContains
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -2500,8 +2588,10 @@ public static function contains($value, $checkForObjectIdentity = true, $checkFo
      * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
      * object.
      *
-     * @param  string                                               $type
+     * @param string $type
+     *
      * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
+     *
      * @since  Method available since Release 3.1.4
      */
     public static function containsOnly($type)
@@ -2513,7 +2603,8 @@ public static function containsOnly($type)
      * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
      * object.
      *
-     * @param  string                                               $classname
+     * @param string $classname
+     *
      * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
      */
     public static function containsOnlyInstancesOf($classname)
@@ -2524,8 +2615,10 @@ public static function containsOnlyInstancesOf($classname)
     /**
      * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object.
      *
-     * @param  mixed                                    $key
+     * @param mixed $key
+     *
      * @return PHPUnit_Framework_Constraint_ArrayHasKey
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function arrayHasKey($key)
@@ -2536,12 +2629,14 @@ public static function arrayHasKey($key)
     /**
      * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object.
      *
-     * @param  mixed                                $value
-     * @param  float                                $delta
-     * @param  int                                  $maxDepth
-     * @param  bool                                 $canonicalize
-     * @param  bool                                 $ignoreCase
+     * @param mixed $value
+     * @param float $delta
+     * @param int   $maxDepth
+     * @param bool  $canonicalize
+     * @param bool  $ignoreCase
+     *
      * @return PHPUnit_Framework_Constraint_IsEqual
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -2560,13 +2655,15 @@ public static function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicali
      * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher
      * object.
      *
-     * @param  string                                 $attributeName
-     * @param  mixed                                  $value
-     * @param  float                                  $delta
-     * @param  int                                    $maxDepth
-     * @param  bool                                   $canonicalize
-     * @param  bool                                   $ignoreCase
+     * @param string $attributeName
+     * @param mixed  $value
+     * @param float  $delta
+     * @param int    $maxDepth
+     * @param bool   $canonicalize
+     * @param bool   $ignoreCase
+     *
      * @return PHPUnit_Framework_Constraint_Attribute
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -2587,6 +2684,7 @@ public static function attributeEqualTo($attributeName, $value, $delta = 0.0, $m
      * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object.
      *
      * @return PHPUnit_Framework_Constraint_IsEmpty
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function isEmpty()
@@ -2598,6 +2696,7 @@ public static function isEmpty()
      * Returns a PHPUnit_Framework_Constraint_FileExists matcher object.
      *
      * @return PHPUnit_Framework_Constraint_FileExists
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function fileExists()
@@ -2608,8 +2707,10 @@ public static function fileExists()
     /**
      * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object.
      *
-     * @param  mixed                                    $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_Constraint_GreaterThan
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function greaterThan($value)
@@ -2622,8 +2723,10 @@ public static function greaterThan($value)
      * a PHPUnit_Framework_Constraint_IsEqual and a
      * PHPUnit_Framework_Constraint_GreaterThan matcher object.
      *
-     * @param  mixed                           $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_Constraint_Or
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function greaterThanOrEqual($value)
@@ -2637,8 +2740,10 @@ public static function greaterThanOrEqual($value)
     /**
      * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object.
      *
-     * @param  string                                         $attributeName
+     * @param string $attributeName
+     *
      * @return PHPUnit_Framework_Constraint_ClassHasAttribute
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function classHasAttribute($attributeName)
@@ -2652,8 +2757,10 @@ public static function classHasAttribute($attributeName)
      * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher
      * object.
      *
-     * @param  string                                               $attributeName
+     * @param string $attributeName
+     *
      * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function classHasStaticAttribute($attributeName)
@@ -2666,8 +2773,10 @@ public static function classHasStaticAttribute($attributeName)
     /**
      * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object.
      *
-     * @param  string                                          $attributeName
+     * @param string $attributeName
+     *
      * @return PHPUnit_Framework_Constraint_ObjectHasAttribute
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function objectHasAttribute($attributeName)
@@ -2680,8 +2789,10 @@ public static function objectHasAttribute($attributeName)
     /**
      * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object.
      *
-     * @param  mixed                                    $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_Constraint_IsIdentical
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function identicalTo($value)
@@ -2692,8 +2803,10 @@ public static function identicalTo($value)
     /**
      * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object.
      *
-     * @param  string                                    $className
+     * @param string $className
+     *
      * @return PHPUnit_Framework_Constraint_IsInstanceOf
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function isInstanceOf($className)
@@ -2704,8 +2817,10 @@ public static function isInstanceOf($className)
     /**
      * Returns a PHPUnit_Framework_Constraint_IsType matcher object.
      *
-     * @param  string                              $type
+     * @param string $type
+     *
      * @return PHPUnit_Framework_Constraint_IsType
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function isType($type)
@@ -2716,8 +2831,10 @@ public static function isType($type)
     /**
      * Returns a PHPUnit_Framework_Constraint_LessThan matcher object.
      *
-     * @param  mixed                                 $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_Constraint_LessThan
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function lessThan($value)
@@ -2730,8 +2847,10 @@ public static function lessThan($value)
      * a PHPUnit_Framework_Constraint_IsEqual and a
      * PHPUnit_Framework_Constraint_LessThan matcher object.
      *
-     * @param  mixed                           $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_Constraint_Or
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function lessThanOrEqual($value)
@@ -2745,8 +2864,10 @@ public static function lessThanOrEqual($value)
     /**
      * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object.
      *
-     * @param  string                                 $pattern
+     * @param string $pattern
+     *
      * @return PHPUnit_Framework_Constraint_PCREMatch
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function matchesRegularExpression($pattern)
@@ -2757,8 +2878,10 @@ public static function matchesRegularExpression($pattern)
     /**
      * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object.
      *
-     * @param  string                                     $string
+     * @param string $string
+     *
      * @return PHPUnit_Framework_Constraint_StringMatches
+     *
      * @since  Method available since Release 3.5.0
      */
     public static function matches($string)
@@ -2769,8 +2892,10 @@ public static function matches($string)
     /**
      * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object.
      *
-     * @param  mixed                                         $prefix
+     * @param mixed $prefix
+     *
      * @return PHPUnit_Framework_Constraint_StringStartsWith
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function stringStartsWith($prefix)
@@ -2781,9 +2906,11 @@ public static function stringStartsWith($prefix)
     /**
      * Returns a PHPUnit_Framework_Constraint_StringContains matcher object.
      *
-     * @param  string                                      $string
-     * @param  bool                                        $case
+     * @param string $string
+     * @param bool   $case
+     *
      * @return PHPUnit_Framework_Constraint_StringContains
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function stringContains($string, $case = true)
@@ -2794,8 +2921,10 @@ public static function stringContains($string, $case = true)
     /**
      * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object.
      *
-     * @param  mixed                                       $suffix
+     * @param mixed $suffix
+     *
      * @return PHPUnit_Framework_Constraint_StringEndsWith
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function stringEndsWith($suffix)
@@ -2806,7 +2935,8 @@ public static function stringEndsWith($suffix)
     /**
      * Returns a PHPUnit_Framework_Constraint_Count matcher object.
      *
-     * @param  int                                $count
+     * @param int $count
+     *
      * @return PHPUnit_Framework_Constraint_Count
      */
     public static function countOf($count)
@@ -2816,7 +2946,8 @@ public static function countOf($count)
     /**
      * Fails a test with the given message.
      *
-     * @param  string                                 $message
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_AssertionFailedError
      */
     public static function fail($message = '')
@@ -2828,9 +2959,11 @@ public static function fail($message = '')
      * Returns the value of an attribute of a class or an object.
      * This also works for attributes that are declared protected or private.
      *
-     * @param  mixed                       $classOrObject
-     * @param  string                      $attributeName
+     * @param mixed  $classOrObject
+     * @param string $attributeName
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public static function readAttribute($classOrObject, $attributeName)
@@ -2872,10 +3005,13 @@ public static function readAttribute($classOrObject, $attributeName)
      * Returns the value of a static attribute.
      * This also works for attributes that are declared protected or private.
      *
-     * @param  string                      $className
-     * @param  string                      $attributeName
+     * @param string $className
+     * @param string $attributeName
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public static function getStaticAttribute($className, $attributeName)
@@ -2920,10 +3056,13 @@ public static function getStaticAttribute($className, $attributeName)
      * Returns the value of an object's attribute.
      * This also works for attributes that are declared protected or private.
      *
-     * @param  object                      $object
-     * @param  string                      $attributeName
+     * @param object $object
+     * @param string $attributeName
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public static function getObjectAttribute($object, $attributeName)
@@ -2977,8 +3116,10 @@ public static function getObjectAttribute($object, $attributeName)
     /**
      * Mark the test as incomplete.
      *
-     * @param  string                                $message
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_IncompleteTestError
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function markTestIncomplete($message = '')
@@ -2989,8 +3130,10 @@ public static function markTestIncomplete($message = '')
     /**
      * Mark the test as skipped.
      *
-     * @param  string                             $message
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_SkippedTestError
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function markTestSkipped($message = '')
@@ -3002,6 +3145,7 @@ public static function markTestSkipped($message = '')
      * Return the current assertion count.
      *
      * @return int
+     *
      * @since  Method available since Release 3.3.3
      */
     public static function getCount()
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
index 1f49e5d..d19b574 100644
--- a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
+++ b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
@@ -13,6 +13,7 @@
  * zero or more times.
  *
  * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount
+ *
  * @since  Method available since Release 3.0.0
  */
 function any()
@@ -27,6 +28,7 @@ function any()
  * Returns a PHPUnit_Framework_Constraint_IsAnything matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsAnything
+ *
  * @since  Method available since Release 3.0.0
  */
 function anything()
@@ -40,8 +42,10 @@ function anything()
 /**
  * Returns a PHPUnit_Framework_Constraint_ArrayHasKey matcher object.
  *
- * @param  mixed                                    $key
+ * @param mixed $key
+ *
  * @return PHPUnit_Framework_Constraint_ArrayHasKey
+ *
  * @since  Method available since Release 3.0.0
  */
 function arrayHasKey($key)
@@ -58,6 +62,7 @@ function arrayHasKey($key)
  * @param mixed             $key
  * @param array|ArrayAccess $array
  * @param string            $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertArrayHasKey($key, $array, $message = '')
@@ -75,6 +80,7 @@ function assertArrayHasKey($key, $array, $message = '')
  * @param array|ArrayAccess $array
  * @param bool              $strict  Check for object identity
  * @param string            $message
+ *
  * @since Method available since Release 4.4.0
  */
 function assertArraySubset($subset, $array, $strict = false, $message = '')
@@ -91,6 +97,7 @@ function assertArraySubset($subset, $array, $strict = false, $message = '')
  * @param mixed             $key
  * @param array|ArrayAccess $array
  * @param string            $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertArrayNotHasKey($key, $array, $message = '')
@@ -112,6 +119,7 @@ function assertArrayNotHasKey($key, $array, $message = '')
  * @param bool   $ignoreCase
  * @param bool   $checkForObjectIdentity
  * @param bool   $checkForNonObjectIdentity
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -131,6 +139,7 @@ function assertAttributeContains($needle, $haystackAttributeName, $haystackClass
  * @param mixed  $haystackClassOrObject
  * @param bool   $isNativeType
  * @param string $message
+ *
  * @since  Method available since Release 3.1.4
  */
 function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '')
@@ -149,6 +158,7 @@ function assertAttributeContainsOnly($type, $haystackAttributeName, $haystackCla
  * @param string $haystackAttributeName
  * @param mixed  $haystackClassOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.6.0
  */
 function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -166,6 +176,7 @@ function assertAttributeCount($expectedCount, $haystackAttributeName, $haystackC
  * @param string $haystackAttributeName
  * @param mixed  $haystackClassOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -203,6 +214,7 @@ function assertAttributeEquals($expected, $actualAttributeName, $actualClassOrOb
  * @param string $actualAttributeName
  * @param string $actualClassOrObject
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -220,6 +232,7 @@ function assertAttributeGreaterThan($expected, $actualAttributeName, $actualClas
  * @param string $actualAttributeName
  * @param string $actualClassOrObject
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -237,6 +250,7 @@ function assertAttributeGreaterThanOrEqual($expected, $actualAttributeName, $act
  * @param string $attributeName
  * @param mixed  $classOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $message = '')
@@ -254,6 +268,7 @@ function assertAttributeInstanceOf($expected, $attributeName, $classOrObject, $m
  * @param string $attributeName
  * @param mixed  $classOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeInternalType($expected, $attributeName, $classOrObject, $message = '')
@@ -271,6 +286,7 @@ function assertAttributeInternalType($expected, $attributeName, $classOrObject,
  * @param string $actualAttributeName
  * @param string $actualClassOrObject
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -288,6 +304,7 @@ function assertAttributeLessThan($expected, $actualAttributeName, $actualClassOr
  * @param string $actualAttributeName
  * @param string $actualClassOrObject
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actualClassOrObject, $message = '')
@@ -309,6 +326,7 @@ function assertAttributeLessThanOrEqual($expected, $actualAttributeName, $actual
  * @param bool   $ignoreCase
  * @param bool   $checkForObjectIdentity
  * @param bool   $checkForNonObjectIdentity
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertAttributeNotContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -329,6 +347,7 @@ function assertAttributeNotContains($needle, $haystackAttributeName, $haystackCl
  * @param mixed  $haystackClassOrObject
  * @param bool   $isNativeType
  * @param string $message
+ *
  * @since  Method available since Release 3.1.4
  */
 function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = null, $message = '')
@@ -347,6 +366,7 @@ function assertAttributeNotContainsOnly($type, $haystackAttributeName, $haystack
  * @param string $haystackAttributeName
  * @param mixed  $haystackClassOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.6.0
  */
 function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -364,6 +384,7 @@ function assertAttributeNotCount($expectedCount, $haystackAttributeName, $haysta
  * @param string $haystackAttributeName
  * @param mixed  $haystackClassOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeNotEmpty($haystackAttributeName, $haystackClassOrObject, $message = '')
@@ -401,6 +422,7 @@ function assertAttributeNotEquals($expected, $actualAttributeName, $actualClassO
  * @param string $attributeName
  * @param mixed  $classOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject, $message = '')
@@ -418,6 +440,7 @@ function assertAttributeNotInstanceOf($expected, $attributeName, $classOrObject,
  * @param string $attributeName
  * @param mixed  $classOrObject
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertAttributeNotInternalType($expected, $attributeName, $classOrObject, $message = '')
@@ -468,6 +491,7 @@ function assertAttributeSame($expected, $actualAttributeName, $actualClassOrObje
  * @param string $attributeName
  * @param string $className
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertClassHasAttribute($attributeName, $className, $message = '')
@@ -484,6 +508,7 @@ function assertClassHasAttribute($attributeName, $className, $message = '')
  * @param string $attributeName
  * @param string $className
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertClassHasStaticAttribute($attributeName, $className, $message = '')
@@ -500,6 +525,7 @@ function assertClassHasStaticAttribute($attributeName, $className, $message = ''
  * @param string $attributeName
  * @param string $className
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertClassNotHasAttribute($attributeName, $className, $message = '')
@@ -516,6 +542,7 @@ function assertClassNotHasAttribute($attributeName, $className, $message = '')
  * @param string $attributeName
  * @param string $className
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertClassNotHasStaticAttribute($attributeName, $className, $message = '')
@@ -535,6 +562,7 @@ function assertClassNotHasStaticAttribute($attributeName, $className, $message =
  * @param bool   $ignoreCase
  * @param bool   $checkForObjectIdentity
  * @param bool   $checkForNonObjectIdentity
+ *
  * @since  Method available since Release 2.1.0
  */
 function assertContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -552,6 +580,7 @@ function assertContains($needle, $haystack, $message = '', $ignoreCase = false,
  * @param mixed  $haystack
  * @param bool   $isNativeType
  * @param string $message
+ *
  * @since  Method available since Release 3.1.4
  */
 function assertContainsOnly($type, $haystack, $isNativeType = null, $message = '')
@@ -595,8 +624,9 @@ function assertCount($expectedCount, $haystack, $message = '')
 /**
  * Asserts that a variable is empty.
  *
- * @param  mixed                                  $actual
- * @param  string                                 $message
+ * @param mixed  $actual
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertEmpty($actual, $message = '')
@@ -614,6 +644,7 @@ function assertEmpty($actual, $message = '')
  * @param DOMElement $actualElement
  * @param bool       $checkAttributes
  * @param string     $message
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, $checkAttributes = false, $message = '')
@@ -646,8 +677,9 @@ function assertEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth
 /**
  * Asserts that a condition is not true.
  *
- * @param  bool                                   $condition
- * @param  string                                 $message
+ * @param bool   $condition
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertNotTrue($condition, $message = '')
@@ -661,8 +693,9 @@ function assertNotTrue($condition, $message = '')
 /**
  * Asserts that a condition is false.
  *
- * @param  bool                                   $condition
- * @param  string                                 $message
+ * @param bool   $condition
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertFalse($condition, $message = '')
@@ -682,6 +715,7 @@ function assertFalse($condition, $message = '')
  * @param string $message
  * @param bool   $canonicalize
  * @param bool   $ignoreCase
+ *
  * @since  Method available since Release 3.2.14
  */
 function assertFileEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -697,6 +731,7 @@ function assertFileEquals($expected, $actual, $message = '', $canonicalize = fal
  *
  * @param string $filename
  * @param string $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertFileExists($filename, $message = '')
@@ -716,6 +751,7 @@ function assertFileExists($filename, $message = '')
  * @param string $message
  * @param bool   $canonicalize
  * @param bool   $ignoreCase
+ *
  * @since  Method available since Release 3.2.14
  */
 function assertFileNotEquals($expected, $actual, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -731,6 +767,7 @@ function assertFileNotEquals($expected, $actual, $message = '', $canonicalize =
  *
  * @param string $filename
  * @param string $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertFileNotExists($filename, $message = '')
@@ -747,6 +784,7 @@ function assertFileNotExists($filename, $message = '')
  * @param mixed  $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertGreaterThan($expected, $actual, $message = '')
@@ -763,6 +801,7 @@ function assertGreaterThan($expected, $actual, $message = '')
  * @param mixed  $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertGreaterThanOrEqual($expected, $actual, $message = '')
@@ -779,6 +818,7 @@ function assertGreaterThanOrEqual($expected, $actual, $message = '')
  * @param string $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertInstanceOf($expected, $actual, $message = '')
@@ -795,6 +835,7 @@ function assertInstanceOf($expected, $actual, $message = '')
  * @param string $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertInternalType($expected, $actual, $message = '')
@@ -810,6 +851,7 @@ function assertInternalType($expected, $actual, $message = '')
  *
  * @param string $actualJson
  * @param string $message
+ *
  * @since  Method available since Release 3.7.20
  */
 function assertJson($actualJson, $message = '')
@@ -916,6 +958,7 @@ function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, $messag
  * @param mixed  $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertLessThan($expected, $actual, $message = '')
@@ -932,6 +975,7 @@ function assertLessThan($expected, $actual, $message = '')
  * @param mixed  $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertLessThanOrEqual($expected, $actual, $message = '')
@@ -951,6 +995,7 @@ function assertLessThanOrEqual($expected, $actual, $message = '')
  * @param bool   $ignoreCase
  * @param bool   $checkForObjectIdentity
  * @param bool   $checkForNonObjectIdentity
+ *
  * @since  Method available since Release 2.1.0
  */
 function assertNotContains($needle, $haystack, $message = '', $ignoreCase = false, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -968,6 +1013,7 @@ function assertNotContains($needle, $haystack, $message = '', $ignoreCase = fals
  * @param mixed  $haystack
  * @param bool   $isNativeType
  * @param string $message
+ *
  * @since  Method available since Release 3.1.4
  */
 function assertNotContainsOnly($type, $haystack, $isNativeType = null, $message = '')
@@ -996,8 +1042,9 @@ function assertNotCount($expectedCount, $haystack, $message = '')
 /**
  * Asserts that a variable is not empty.
  *
- * @param  mixed                                  $actual
- * @param  string                                 $message
+ * @param mixed  $actual
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertNotEmpty($actual, $message = '')
@@ -1018,6 +1065,7 @@ function assertNotEmpty($actual, $message = '')
  * @param int    $maxDepth
  * @param bool   $canonicalize
  * @param bool   $ignoreCase
+ *
  * @since  Method available since Release 2.3.0
  */
 function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -1034,6 +1082,7 @@ function assertNotEquals($expected, $actual, $message = '', $delta = 0.0, $maxDe
  * @param string $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertNotInstanceOf($expected, $actual, $message = '')
@@ -1050,6 +1099,7 @@ function assertNotInstanceOf($expected, $actual, $message = '')
  * @param string $expected
  * @param mixed  $actual
  * @param string $message
+ *
  * @since Method available since Release 3.5.0
  */
 function assertNotInternalType($expected, $actual, $message = '')
@@ -1063,8 +1113,9 @@ function assertNotInternalType($expected, $actual, $message = '')
 /**
  * Asserts that a condition is not false.
  *
- * @param  bool                                   $condition
- * @param  string                                 $message
+ * @param bool   $condition
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertNotFalse($condition, $message = '')
@@ -1095,6 +1146,7 @@ function assertNotNull($actual, $message = '')
  * @param string $pattern
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 2.1.0
  */
 function assertNotRegExp($pattern, $string, $message = '')
@@ -1148,6 +1200,7 @@ function assertNotSameSize($expected, $actual, $message = '')
  * @param string $actual
  * @param string $message
  * @param bool   $isHtml
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertNotTag($matcher, $actual, $message = '', $isHtml = true)
@@ -1178,6 +1231,7 @@ function assertNull($actual, $message = '')
  * @param string $attributeName
  * @param object $object
  * @param string $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertObjectHasAttribute($attributeName, $object, $message = '')
@@ -1194,6 +1248,7 @@ function assertObjectHasAttribute($attributeName, $object, $message = '')
  * @param string $attributeName
  * @param object $object
  * @param string $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertObjectNotHasAttribute($attributeName, $object, $message = '')
@@ -1272,6 +1327,7 @@ function assertSameSize($expected, $actual, $message = '')
  * @param mixed  $actual
  * @param string $message
  * @param bool   $isHtml
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertSelectCount($selector, $count, $actual, $message = '', $isHtml = true)
@@ -1292,6 +1348,7 @@ function assertSelectCount($selector, $count, $actual, $message = '', $isHtml =
  * @param mixed  $actual
  * @param string $message
  * @param bool   $isHtml
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertSelectEquals($selector, $content, $count, $actual, $message = '', $isHtml = true)
@@ -1312,6 +1369,7 @@ function assertSelectEquals($selector, $content, $count, $actual, $message = '',
  * @param mixed  $actual
  * @param string $message
  * @param bool   $isHtml
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertSelectRegExp($selector, $pattern, $count, $actual, $message = '', $isHtml = true)
@@ -1328,6 +1386,7 @@ function assertSelectRegExp($selector, $pattern, $count, $actual, $message = '',
  * @param string $suffix
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.4.0
  */
 function assertStringEndsNotWith($suffix, $string, $message = '')
@@ -1344,6 +1403,7 @@ function assertStringEndsNotWith($suffix, $string, $message = '')
  * @param string $suffix
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.4.0
  */
 function assertStringEndsWith($suffix, $string, $message = '')
@@ -1363,6 +1423,7 @@ function assertStringEndsWith($suffix, $string, $message = '')
  * @param string $message
  * @param bool   $canonicalize
  * @param bool   $ignoreCase
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertStringEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -1379,6 +1440,7 @@ function assertStringEqualsFile($expectedFile, $actualString, $message = '', $ca
  * @param string $format
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.5.0
  */
 function assertStringMatchesFormat($format, $string, $message = '')
@@ -1395,6 +1457,7 @@ function assertStringMatchesFormat($format, $string, $message = '')
  * @param string $formatFile
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.5.0
  */
 function assertStringMatchesFormatFile($formatFile, $string, $message = '')
@@ -1414,6 +1477,7 @@ function assertStringMatchesFormatFile($formatFile, $string, $message = '')
  * @param string $message
  * @param bool   $canonicalize
  * @param bool   $ignoreCase
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertStringNotEqualsFile($expectedFile, $actualString, $message = '', $canonicalize = false, $ignoreCase = false)
@@ -1430,6 +1494,7 @@ function assertStringNotEqualsFile($expectedFile, $actualString, $message = '',
  * @param string $format
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.5.0
  */
 function assertStringNotMatchesFormat($format, $string, $message = '')
@@ -1446,6 +1511,7 @@ function assertStringNotMatchesFormat($format, $string, $message = '')
  * @param string $formatFile
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.5.0
  */
 function assertStringNotMatchesFormatFile($formatFile, $string, $message = '')
@@ -1462,6 +1528,7 @@ function assertStringNotMatchesFormatFile($formatFile, $string, $message = '')
  * @param string $prefix
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.4.0
  */
 function assertStringStartsNotWith($prefix, $string, $message = '')
@@ -1478,6 +1545,7 @@ function assertStringStartsNotWith($prefix, $string, $message = '')
  * @param string $prefix
  * @param string $string
  * @param string $message
+ *
  * @since  Method available since Release 3.4.0
  */
 function assertStringStartsWith($prefix, $string, $message = '')
@@ -1621,6 +1689,7 @@ function assertStringStartsWith($prefix, $string, $message = '')
  * @param string $actual
  * @param string $message
  * @param bool   $isHtml
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertTag($matcher, $actual, $message = '', $isHtml = true)
@@ -1637,6 +1706,7 @@ function assertTag($matcher, $actual, $message = '', $isHtml = true)
  * @param  mixed$value
  * @param PHPUnit_Framework_Constraint $constraint
  * @param string                       $message
+ *
  * @since  Method available since Release 3.0.0
  */
 function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '')
@@ -1650,8 +1720,9 @@ function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message =
 /**
  * Asserts that a condition is true.
  *
- * @param  bool                                   $condition
- * @param  string                                 $message
+ * @param bool   $condition
+ * @param string $message
+ *
  * @throws PHPUnit_Framework_AssertionFailedError
  */
 function assertTrue($condition, $message = '')
@@ -1668,6 +1739,7 @@ function assertTrue($condition, $message = '')
  * @param string $expectedFile
  * @param string $actualFile
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '')
@@ -1684,6 +1756,7 @@ function assertXmlFileEqualsXmlFile($expectedFile, $actualFile, $message = '')
  * @param string $expectedFile
  * @param string $actualFile
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = '')
@@ -1700,6 +1773,7 @@ function assertXmlFileNotEqualsXmlFile($expectedFile, $actualFile, $message = ''
  * @param string $expectedFile
  * @param string $actualXml
  * @param string $message
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '')
@@ -1716,6 +1790,7 @@ function assertXmlStringEqualsXmlFile($expectedFile, $actualXml, $message = '')
  * @param string $expectedXml
  * @param string $actualXml
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '')
@@ -1732,6 +1807,7 @@ function assertXmlStringEqualsXmlString($expectedXml, $actualXml, $message = '')
  * @param string $expectedFile
  * @param string $actualXml
  * @param string $message
+ *
  * @since  Method available since Release 3.3.0
  */
 function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '')
@@ -1748,6 +1824,7 @@ function assertXmlStringNotEqualsXmlFile($expectedFile, $actualXml, $message = '
  * @param string $expectedXml
  * @param string $actualXml
  * @param string $message
+ *
  * @since  Method available since Release 3.1.0
  */
 function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message = '')
@@ -1762,8 +1839,10 @@ function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, $message =
  * Returns a matcher that matches when the method is executed
  * at the given $index.
  *
- * @param  int                                                 $index
+ * @param int $index
+ *
  * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex
+ *
  * @since  Method available since Release 3.0.0
  */
 function at($index)
@@ -1778,6 +1857,7 @@ function at($index)
  * Returns a matcher that matches when the method is executed at least once.
  *
  * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce
+ *
  * @since  Method available since Release 3.0.0
  */
 function atLeastOnce()
@@ -1791,9 +1871,11 @@ function atLeastOnce()
 /**
  * Returns a PHPUnit_Framework_Constraint_Attribute matcher object.
  *
- * @param  PHPUnit_Framework_Constraint           $constraint
- * @param  string                                 $attributeName
+ * @param PHPUnit_Framework_Constraint $constraint
+ * @param string                       $attributeName
+ *
  * @return PHPUnit_Framework_Constraint_Attribute
+ *
  * @since  Method available since Release 3.1.0
  */
 function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName)
@@ -1809,13 +1891,15 @@ function attribute(PHPUnit_Framework_Constraint $constraint, $attributeName)
  * that is wrapped in a PHPUnit_Framework_Constraint_Attribute matcher
  * object.
  *
- * @param  string                                 $attributeName
- * @param  mixed                                  $value
- * @param  float                                  $delta
- * @param  int                                    $maxDepth
- * @param  bool                                   $canonicalize
- * @param  bool                                   $ignoreCase
+ * @param string $attributeName
+ * @param mixed  $value
+ * @param float  $delta
+ * @param int    $maxDepth
+ * @param bool   $canonicalize
+ * @param bool   $ignoreCase
+ *
  * @return PHPUnit_Framework_Constraint_Attribute
+ *
  * @since  Method available since Release 3.1.0
  */
 function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -1829,7 +1913,8 @@ function attributeEqualTo($attributeName, $value, $delta = 0.0, $maxDepth = 10,
 /**
  * Returns a PHPUnit_Framework_Constraint_Callback matcher object.
  *
- * @param  callable                              $callback
+ * @param callable $callback
+ *
  * @return PHPUnit_Framework_Constraint_Callback
  */
 function callback($callback)
@@ -1843,8 +1928,10 @@ function callback($callback)
 /**
  * Returns a PHPUnit_Framework_Constraint_ClassHasAttribute matcher object.
  *
- * @param  string                                         $attributeName
+ * @param string $attributeName
+ *
  * @return PHPUnit_Framework_Constraint_ClassHasAttribute
+ *
  * @since  Method available since Release 3.1.0
  */
 function classHasAttribute($attributeName)
@@ -1859,8 +1946,10 @@ function classHasAttribute($attributeName)
  * Returns a PHPUnit_Framework_Constraint_ClassHasStaticAttribute matcher
  * object.
  *
- * @param  string                                               $attributeName
+ * @param string $attributeName
+ *
  * @return PHPUnit_Framework_Constraint_ClassHasStaticAttribute
+ *
  * @since  Method available since Release 3.1.0
  */
 function classHasStaticAttribute($attributeName)
@@ -1875,10 +1964,12 @@ function classHasStaticAttribute($attributeName)
  * Returns a PHPUnit_Framework_Constraint_TraversableContains matcher
  * object.
  *
- * @param  mixed                                            $value
- * @param  bool                                             $checkForObjectIdentity
- * @param  bool                                             $checkForNonObjectIdentity
+ * @param mixed $value
+ * @param bool  $checkForObjectIdentity
+ * @param bool  $checkForNonObjectIdentity
+ *
  * @return PHPUnit_Framework_Constraint_TraversableContains
+ *
  * @since  Method available since Release 3.0.0
  */
 function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -1893,8 +1984,10 @@ function contains($value, $checkForObjectIdentity = true, $checkForNonObjectIden
  * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
  * object.
  *
- * @param  string                                               $type
+ * @param string $type
+ *
  * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
+ *
  * @since  Method available since Release 3.1.4
  */
 function containsOnly($type)
@@ -1909,7 +2002,8 @@ function containsOnly($type)
  * Returns a PHPUnit_Framework_Constraint_TraversableContainsOnly matcher
  * object.
  *
- * @param  string                                               $classname
+ * @param string $classname
+ *
  * @return PHPUnit_Framework_Constraint_TraversableContainsOnly
  */
 function containsOnlyInstancesOf($classname)
@@ -1923,12 +2017,14 @@ function containsOnlyInstancesOf($classname)
 /**
  * Returns a PHPUnit_Framework_Constraint_IsEqual matcher object.
  *
- * @param  mixed                                $value
- * @param  float                                $delta
- * @param  int                                  $maxDepth
- * @param  bool                                 $canonicalize
- * @param  bool                                 $ignoreCase
+ * @param mixed $value
+ * @param float $delta
+ * @param int   $maxDepth
+ * @param bool  $canonicalize
+ * @param bool  $ignoreCase
+ *
  * @return PHPUnit_Framework_Constraint_IsEqual
+ *
  * @since  Method available since Release 3.0.0
  */
 function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -1943,8 +2039,10 @@ function equalTo($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $i
  * Returns a matcher that matches when the method is executed
  * exactly $count times.
  *
- * @param  int                                               $count
+ * @param int $count
+ *
  * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+ *
  * @since  Method available since Release 3.0.0
  */
 function exactly($count)
@@ -1959,6 +2057,7 @@ function exactly($count)
  * Returns a PHPUnit_Framework_Constraint_FileExists matcher object.
  *
  * @return PHPUnit_Framework_Constraint_FileExists
+ *
  * @since  Method available since Release 3.0.0
  */
 function fileExists()
@@ -1972,8 +2071,10 @@ function fileExists()
 /**
  * Returns a PHPUnit_Framework_Constraint_GreaterThan matcher object.
  *
- * @param  mixed                                    $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_Constraint_GreaterThan
+ *
  * @since  Method available since Release 3.0.0
  */
 function greaterThan($value)
@@ -1989,8 +2090,10 @@ function greaterThan($value)
  * a PHPUnit_Framework_Constraint_IsEqual and a
  * PHPUnit_Framework_Constraint_GreaterThan matcher object.
  *
- * @param  mixed                           $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_Constraint_Or
+ *
  * @since  Method available since Release 3.1.0
  */
 function greaterThanOrEqual($value)
@@ -2004,8 +2107,10 @@ function greaterThanOrEqual($value)
 /**
  * Returns a PHPUnit_Framework_Constraint_IsIdentical matcher object.
  *
- * @param  mixed                                    $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_Constraint_IsIdentical
+ *
  * @since  Method available since Release 3.0.0
  */
 function identicalTo($value)
@@ -2020,6 +2125,7 @@ function identicalTo($value)
  * Returns a PHPUnit_Framework_Constraint_IsEmpty matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsEmpty
+ *
  * @since  Method available since Release 3.5.0
  */
 function isEmpty()
@@ -2034,6 +2140,7 @@ function isEmpty()
  * Returns a PHPUnit_Framework_Constraint_IsFalse matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsFalse
+ *
  * @since  Method available since Release 3.3.0
  */
 function isFalse()
@@ -2047,8 +2154,10 @@ function isFalse()
 /**
  * Returns a PHPUnit_Framework_Constraint_IsInstanceOf matcher object.
  *
- * @param  string                                    $className
+ * @param string $className
+ *
  * @return PHPUnit_Framework_Constraint_IsInstanceOf
+ *
  * @since  Method available since Release 3.0.0
  */
 function isInstanceOf($className)
@@ -2063,6 +2172,7 @@ function isInstanceOf($className)
  * Returns a PHPUnit_Framework_Constraint_IsJson matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsJson
+ *
  * @since  Method available since Release 3.7.20
  */
 function isJson()
@@ -2077,6 +2187,7 @@ function isJson()
  * Returns a PHPUnit_Framework_Constraint_IsNull matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsNull
+ *
  * @since  Method available since Release 3.3.0
  */
 function isNull()
@@ -2091,6 +2202,7 @@ function isNull()
  * Returns a PHPUnit_Framework_Constraint_IsTrue matcher object.
  *
  * @return PHPUnit_Framework_Constraint_IsTrue
+ *
  * @since  Method available since Release 3.3.0
  */
 function isTrue()
@@ -2104,8 +2216,10 @@ function isTrue()
 /**
  * Returns a PHPUnit_Framework_Constraint_IsType matcher object.
  *
- * @param  string                              $type
+ * @param string $type
+ *
  * @return PHPUnit_Framework_Constraint_IsType
+ *
  * @since  Method available since Release 3.0.0
  */
 function isType($type)
@@ -2119,8 +2233,10 @@ function isType($type)
 /**
  * Returns a PHPUnit_Framework_Constraint_LessThan matcher object.
  *
- * @param  mixed                                 $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_Constraint_LessThan
+ *
  * @since  Method available since Release 3.0.0
  */
 function lessThan($value)
@@ -2136,8 +2252,10 @@ function lessThan($value)
  * a PHPUnit_Framework_Constraint_IsEqual and a
  * PHPUnit_Framework_Constraint_LessThan matcher object.
  *
- * @param  mixed                           $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_Constraint_Or
+ *
  * @since  Method available since Release 3.1.0
  */
 function lessThanOrEqual($value)
@@ -2152,6 +2270,7 @@ function lessThanOrEqual($value)
  * Returns a PHPUnit_Framework_Constraint_And matcher object.
  *
  * @return PHPUnit_Framework_Constraint_And
+ *
  * @since  Method available since Release 3.0.0
  */
 function logicalAnd()
@@ -2165,8 +2284,10 @@ function logicalAnd()
 /**
  * Returns a PHPUnit_Framework_Constraint_Not matcher object.
  *
- * @param  PHPUnit_Framework_Constraint     $constraint
+ * @param PHPUnit_Framework_Constraint $constraint
+ *
  * @return PHPUnit_Framework_Constraint_Not
+ *
  * @since  Method available since Release 3.0.0
  */
 function logicalNot(PHPUnit_Framework_Constraint $constraint)
@@ -2181,6 +2302,7 @@ function logicalNot(PHPUnit_Framework_Constraint $constraint)
  * Returns a PHPUnit_Framework_Constraint_Or matcher object.
  *
  * @return PHPUnit_Framework_Constraint_Or
+ *
  * @since  Method available since Release 3.0.0
  */
 function logicalOr()
@@ -2195,6 +2317,7 @@ function logicalOr()
  * Returns a PHPUnit_Framework_Constraint_Xor matcher object.
  *
  * @return PHPUnit_Framework_Constraint_Xor
+ *
  * @since  Method available since Release 3.0.0
  */
 function logicalXor()
@@ -2208,8 +2331,10 @@ function logicalXor()
 /**
  * Returns a PHPUnit_Framework_Constraint_StringMatches matcher object.
  *
- * @param  string                                     $string
+ * @param string $string
+ *
  * @return PHPUnit_Framework_Constraint_StringMatches
+ *
  * @since  Method available since Release 3.5.0
  */
 function matches($string)
@@ -2223,8 +2348,10 @@ function matches($string)
 /**
  * Returns a PHPUnit_Framework_Constraint_PCREMatch matcher object.
  *
- * @param  string                                 $pattern
+ * @param string $pattern
+ *
  * @return PHPUnit_Framework_Constraint_PCREMatch
+ *
  * @since  Method available since Release 3.0.0
  */
 function matchesRegularExpression($pattern)
@@ -2239,6 +2366,7 @@ function matchesRegularExpression($pattern)
  * Returns a matcher that matches when the method is never executed.
  *
  * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+ *
  * @since  Method available since Release 3.0.0
  */
 function never()
@@ -2252,8 +2380,10 @@ function never()
 /**
  * Returns a PHPUnit_Framework_Constraint_ObjectHasAttribute matcher object.
  *
- * @param  string                                          $attributeName
+ * @param string $attributeName
+ *
  * @return PHPUnit_Framework_Constraint_ObjectHasAttribute
+ *
  * @since  Method available since Release 3.0.0
  */
 function objectHasAttribute($attributeName)
@@ -2265,8 +2395,10 @@ function objectHasAttribute($attributeName)
 }
 
 /**
- * @param  mixed                                              $value, ...
+ * @param mixed $value, ...
+ *
  * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls
+ *
  * @since  Method available since Release 3.0.0
  */
 function onConsecutiveCalls()
@@ -2281,6 +2413,7 @@ function onConsecutiveCalls()
  * Returns a matcher that matches when the method is executed exactly once.
  *
  * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+ *
  * @since  Method available since Release 3.0.0
  */
 function once()
@@ -2292,8 +2425,10 @@ function once()
 }
 
 /**
- * @param  int                                              $argumentIndex
+ * @param int $argumentIndex
+ *
  * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument
+ *
  * @since  Method available since Release 3.3.0
  */
 function returnArgument($argumentIndex)
@@ -2305,8 +2440,10 @@ function returnArgument($argumentIndex)
 }
 
 /**
- * @param  mixed                                            $callback
+ * @param mixed $callback
+ *
  * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback
+ *
  * @since  Method available since Release 3.3.0
  */
 function returnCallback($callback)
@@ -2323,6 +2460,7 @@ function returnCallback($callback)
  * This method is useful when mocking a fluent interface.
  *
  * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf
+ *
  * @since  Method available since Release 3.6.0
  */
 function returnSelf()
@@ -2334,8 +2472,10 @@ function returnSelf()
 }
 
 /**
- * @param  mixed                                    $value
+ * @param mixed $value
+ *
  * @return PHPUnit_Framework_MockObject_Stub_Return
+ *
  * @since  Method available since Release 3.0.0
  */
 function returnValue($value)
@@ -2347,8 +2487,10 @@ function returnValue($value)
 }
 
 /**
- * @param  array                                            $valueMap
+ * @param array $valueMap
+ *
  * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap
+ *
  * @since  Method available since Release 3.6.0
  */
 function returnValueMap(array $valueMap)
@@ -2362,9 +2504,11 @@ function returnValueMap(array $valueMap)
 /**
  * Returns a PHPUnit_Framework_Constraint_StringContains matcher object.
  *
- * @param  string                                      $string
- * @param  bool                                        $case
+ * @param string $string
+ * @param bool   $case
+ *
  * @return PHPUnit_Framework_Constraint_StringContains
+ *
  * @since  Method available since Release 3.0.0
  */
 function stringContains($string, $case = true)
@@ -2378,8 +2522,10 @@ function stringContains($string, $case = true)
 /**
  * Returns a PHPUnit_Framework_Constraint_StringEndsWith matcher object.
  *
- * @param  mixed                                       $suffix
+ * @param mixed $suffix
+ *
  * @return PHPUnit_Framework_Constraint_StringEndsWith
+ *
  * @since  Method available since Release 3.4.0
  */
 function stringEndsWith($suffix)
@@ -2393,8 +2539,10 @@ function stringEndsWith($suffix)
 /**
  * Returns a PHPUnit_Framework_Constraint_StringStartsWith matcher object.
  *
- * @param  mixed                                         $prefix
+ * @param mixed $prefix
+ *
  * @return PHPUnit_Framework_Constraint_StringStartsWith
+ *
  * @since  Method available since Release 3.4.0
  */
 function stringStartsWith($prefix)
@@ -2406,8 +2554,10 @@ function stringStartsWith($prefix)
 }
 
 /**
- * @param  Exception                                   $exception
+ * @param Exception $exception
+ *
  * @return PHPUnit_Framework_MockObject_Stub_Exception
+ *
  * @since  Method available since Release 3.1.0
  */
 function throwException(Exception $exception)
diff --git a/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php b/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php
index bf8d062..c6e5d77 100644
--- a/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php
+++ b/vendor/phpunit/phpunit/src/Framework/BaseTestListener.php
@@ -11,8 +11,8 @@
 /**
  * An empty Listener that can be extended to implement TestListener
  * with just a few lines of code.
- * @see PHPUnit_Framework_TestListener for documentation on the API methods.
  *
+ * @see PHPUnit_Framework_TestListener for documentation on the API methods.
  * @since Class available since Release 4.0.0
  */
 abstract class PHPUnit_Framework_BaseTestListener implements PHPUnit_Framework_TestListener
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint.php b/vendor/phpunit/phpunit/src/Framework/Constraint.php
index 327e1a9..43f8b2b 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint.php
@@ -34,10 +34,12 @@ public function __construct()
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -63,7 +65,8 @@ public function evaluate($other, $description = '', $returnResult = false)
      *
      * This method can be overridden to implement the evaluation algorithm.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -75,6 +78,7 @@ protected function matches($other)
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.4.0
      */
     public function count()
@@ -85,9 +89,10 @@ public function count()
     /**
      * Throws an exception for the given compared value and test description
      *
-     * @param  mixed                                          $other             Evaluated value or object.
-     * @param  string                                         $description       Additional information about the test
-     * @param  SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure
+     * @param mixed                                          $other             Evaluated value or object.
+     * @param string                                         $description       Additional information about the test
+     * @param SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     protected function fail($other, $description, SebastianBergmann\Comparator\ComparisonFailure $comparisonFailure = null)
@@ -119,7 +124,8 @@ protected function fail($other, $description, SebastianBergmann\Comparator\Compa
      * The function can be overridden to provide additional failure
      * information like a diff
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function additionalFailureDescription($other)
@@ -136,7 +142,8 @@ protected function additionalFailureDescription($other)
      * To provide additional failure information additionalFailureDescription
      * can be used.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/And.php b/vendor/phpunit/phpunit/src/Framework/Constraint/And.php
index fa38aa5..e4fa32f 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/And.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/And.php
@@ -26,7 +26,8 @@ class PHPUnit_Framework_Constraint_And extends PHPUnit_Framework_Constraint
     protected $lastConstraint = null;
 
     /**
-     * @param  PHPUnit_Framework_Constraint[] $constraints
+     * @param PHPUnit_Framework_Constraint[] $constraints
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function setConstraints(array $constraints)
@@ -55,10 +56,12 @@ public function setConstraints(array $constraints)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -106,6 +109,7 @@ public function toString()
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.4.0
      */
     public function count()
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php
index 84da6fb..f208b70 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php
@@ -38,7 +38,8 @@ public function __construct($key)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -70,7 +71,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php
index 35dbd30..c3cb095 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php
@@ -43,7 +43,8 @@ public function __construct($subset, $strict = false)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  array|ArrayAccess $other Array or ArrayAccess object to evaluate.
+     * @param array|ArrayAccess $other Array or ArrayAccess object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -73,7 +74,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php
index 1252665..5a0c458 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php
@@ -39,10 +39,12 @@ public function __construct(PHPUnit_Framework_Constraint $constraint, $attribute
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -74,7 +76,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
index 280d6b1..df60d68 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
@@ -16,7 +16,8 @@ class PHPUnit_Framework_Constraint_Callback extends PHPUnit_Framework_Constraint
     private $callback;
 
     /**
-     * @param  callable                    $callback
+     * @param callable $callback
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($callback)
@@ -37,7 +38,8 @@ public function __construct($callback)
      * Evaluates the constraint for parameter $value. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php
index 53007a0..97315c9 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php
@@ -36,7 +36,8 @@ public function __construct($attributeName)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -65,7 +66,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php
index b8c7c18..7bc29f1 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php
@@ -22,7 +22,8 @@ class PHPUnit_Framework_Constraint_ClassHasStaticAttribute extends PHPUnit_Frame
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -42,6 +43,7 @@ protected function matches($other)
      * Returns a string representation of the constraint.
      *
      * @return string
+     *
      * @since  Method available since Release 3.3.0
      */
     public function toString()
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php
index 0da9431..680b832 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php
@@ -37,10 +37,12 @@ public function __construct(PHPUnit_Framework_Constraint $innerConstraint)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php
index a388da9..ee370ea 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Count.php
@@ -31,7 +31,8 @@ public function __construct($expected)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other
+     * @param mixed $other
+     *
      * @return bool
      */
     protected function matches($other)
@@ -40,7 +41,8 @@ protected function matches($other)
     }
 
     /**
-     * @param  mixed $other
+     * @param mixed $other
+     *
      * @return bool
      */
     protected function getCountOf($other)
@@ -76,7 +78,8 @@ protected function getCountOf($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php
index ab3c136..c05f172 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php
@@ -31,7 +31,8 @@ public function __construct($className)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -45,7 +46,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php
index 100d5f5..8f402fc 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php
@@ -31,7 +31,8 @@ public function __construct($expected)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  Exception $other
+     * @param Exception $other
+     *
      * @return bool
      */
     protected function matches($other)
@@ -45,7 +46,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php
index c6d955c..c9632e9 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php
@@ -31,7 +31,8 @@ public function __construct($expected)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  Exception $other
+     * @param Exception $other
+     *
      * @return bool
      */
     protected function matches($other)
@@ -45,7 +46,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php
index 34b15f4..7f2283a 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php
@@ -31,7 +31,8 @@ public function __construct($expected)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  Exception $other
+     * @param Exception $other
+     *
      * @return bool
      */
     protected function matches($other)
@@ -53,7 +54,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php
index 58d2a18..25643bd 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php
@@ -21,7 +21,8 @@ class PHPUnit_Framework_Constraint_FileExists extends PHPUnit_Framework_Constrai
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -35,7 +36,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php
index 557df5d..b67eae4 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php
@@ -34,7 +34,8 @@ public function __construct($value)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
index e624abb..bfaa201 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
@@ -25,10 +25,12 @@ class PHPUnit_Framework_Constraint_IsAnything extends PHPUnit_Framework_Constrai
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -50,6 +52,7 @@ public function toString()
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.5.0
      */
     public function count()
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php
index f0323a6..e490669 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php
@@ -19,7 +19,8 @@ class PHPUnit_Framework_Constraint_IsEmpty extends PHPUnit_Framework_Constraint
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -47,7 +48,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php
index 2cf9c69..da5348d 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php
@@ -52,11 +52,12 @@ class PHPUnit_Framework_Constraint_IsEqual extends PHPUnit_Framework_Constraint
     protected $lastFailure;
 
     /**
-     * @param  mixed                       $value
-     * @param  float                       $delta
-     * @param  int                         $maxDepth
-     * @param  bool                        $canonicalize
-     * @param  bool                        $ignoreCase
+     * @param mixed $value
+     * @param float $delta
+     * @param int   $maxDepth
+     * @param bool  $canonicalize
+     * @param bool  $ignoreCase
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($value, $delta = 0.0, $maxDepth = 10, $canonicalize = false, $ignoreCase = false)
@@ -96,10 +97,12 @@ public function __construct($value, $delta = 0.0, $maxDepth = 10, $canonicalize
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php
index 9dee329..d476b09 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php
@@ -19,7 +19,8 @@ class PHPUnit_Framework_Constraint_IsFalse extends PHPUnit_Framework_Constraint
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
index 981f36c..9d8b5a1 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
@@ -52,10 +52,12 @@ public function __construct($value)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -95,7 +97,8 @@ public function evaluate($other, $description = '', $returnResult = false)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php
index 3c70cc5..69a7a78 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php
@@ -36,7 +36,8 @@ public function __construct($className)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -50,7 +51,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php
index 34cda56..f6951ba 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php
@@ -19,7 +19,8 @@ class PHPUnit_Framework_Constraint_IsJson extends PHPUnit_Framework_Constraint
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -38,7 +39,8 @@ protected function matches($other)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php
index dd300c2..d3b23a6 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php
@@ -19,7 +19,8 @@ class PHPUnit_Framework_Constraint_IsNull extends PHPUnit_Framework_Constraint
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php
index 273adf4..6acddbb 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php
@@ -19,7 +19,8 @@ class PHPUnit_Framework_Constraint_IsTrue extends PHPUnit_Framework_Constraint
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php
index b93b336..7f0499b 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php
@@ -57,7 +57,8 @@ class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint
     protected $type;
 
     /**
-     * @param  string                      $type
+     * @param string $type
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($type)
@@ -81,7 +82,8 @@ public function __construct($type)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
index 5428986..700abe3 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
@@ -37,7 +37,8 @@ public function __construct($value)
      *
      * This method can be overridden to implement the evaluation algorithm.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php
index e8fb1fb..0d06277 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php
@@ -18,8 +18,9 @@ class PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider
     /**
      * Translates JSON error to a human readable string.
      *
-     * @param  string $error
-     * @param  string $prefix
+     * @param string $error
+     * @param string $prefix
+     *
      * @return string
      */
     public static function determineJsonError($error, $prefix = '')
@@ -45,7 +46,8 @@ public static function determineJsonError($error, $prefix = '')
     /**
      * Translates a given type to a human readable message prefix.
      *
-     * @param  string $type
+     * @param string $type
+     *
      * @return string
      */
     public static function translateTypeToPrefix($type)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php
index a4fffe3..0160ec3 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php
@@ -34,7 +34,8 @@ public function __construct($value)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php
index 21bb14a..72e2548 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Not.php
@@ -35,7 +35,8 @@ public function __construct($constraint)
     }
 
     /**
-     * @param  string $string
+     * @param string $string
+     *
      * @return string
      */
     public static function negate($string)
@@ -79,10 +80,12 @@ public static function negate($string)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -104,7 +107,8 @@ public function evaluate($other, $description = '', $returnResult = false)
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
@@ -146,6 +150,7 @@ public function toString()
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.4.0
      */
     public function count()
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php
index 7c6453a..700fbf4 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php
@@ -22,7 +22,8 @@ class PHPUnit_Framework_Constraint_ObjectHasAttribute extends PHPUnit_Framework_
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php
index 4a9e71a..b261456 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Or.php
@@ -48,10 +48,12 @@ public function setConstraints(array $constraints)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -99,6 +101,7 @@ public function toString()
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.4.0
      */
     public function count()
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php b/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php
index 9465b10..fe1acc2 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php
@@ -39,7 +39,8 @@ public function __construct($pattern)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php
index 0d3d7b5..ee02bf4 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php
@@ -47,7 +47,8 @@ public function __construct($string, $ignoreCase = false)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php
index 1df062c..ebeb921 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php
@@ -34,7 +34,8 @@ public function __construct($suffix)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php
index b373855..9aee011 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php
@@ -34,7 +34,8 @@ public function __construct($prefix)
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php
index 39b98d9..c7072f3 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php
@@ -32,9 +32,10 @@ class PHPUnit_Framework_Constraint_TraversableContains extends PHPUnit_Framework
     protected $value;
 
     /**
-     * @param  mixed                       $value
-     * @param  bool                        $checkForObjectIdentity
-     * @param  bool                        $checkForNonObjectIdentity
+     * @param mixed $value
+     * @param bool  $checkForObjectIdentity
+     * @param bool  $checkForNonObjectIdentity
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($value, $checkForObjectIdentity = true, $checkForNonObjectIdentity = false)
@@ -58,7 +59,8 @@ public function __construct($value, $checkForObjectIdentity = true, $checkForNon
      * Evaluates the constraint for parameter $other. Returns true if the
      * constraint is met, false otherwise.
      *
-     * @param  mixed $other Value or object to evaluate.
+     * @param mixed $other Value or object to evaluate.
+     *
      * @return bool
      */
     protected function matches($other)
@@ -110,7 +112,8 @@ public function toString()
      * The beginning of failure messages is "Failed asserting that" in most
      * cases. This method should return the second part of that sentence.
      *
-     * @param  mixed  $other Evaluated value or object.
+     * @param mixed $other Evaluated value or object.
+     *
      * @return string
      */
     protected function failureDescription($other)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php
index f2f76c4..1397b03 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php
@@ -55,10 +55,12 @@ public function __construct($type, $isNativeType = true)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php
index 9ce4d06..79ecbfd 100644
--- a/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Xor.php
@@ -48,10 +48,12 @@ public function setConstraints(array $constraints)
      * a boolean value instead: true in case of success, false in case of a
      * failure.
      *
-     * @param  mixed                                        $other        Value or object to evaluate.
-     * @param  string                                       $description  Additional information about the test
-     * @param  bool                                         $returnResult Whether to return a result or throw an exception
+     * @param mixed  $other        Value or object to evaluate.
+     * @param string $description  Additional information about the test
+     * @param bool   $returnResult Whether to return a result or throw an exception
+     *
      * @return mixed
+     *
      * @throws PHPUnit_Framework_ExpectationFailedException
      */
     public function evaluate($other, $description = '', $returnResult = false)
@@ -104,6 +106,7 @@ public function toString()
      * Counts the number of constraint elements.
      *
      * @return int
+     *
      * @since  Method available since Release 3.4.0
      */
     public function count()
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception.php b/vendor/phpunit/phpunit/src/Framework/Exception.php
index 4274c12..715c55e 100644
--- a/vendor/phpunit/phpunit/src/Framework/Exception.php
+++ b/vendor/phpunit/phpunit/src/Framework/Exception.php
@@ -27,7 +27,6 @@
  * the parent would break the intended encapsulation of process isolation.
  *
  * @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions
- *
  * @since Class available since Release 3.4.0
  */
 class PHPUnit_Framework_Exception extends RuntimeException implements PHPUnit_Exception
diff --git a/vendor/phpunit/phpunit/src/Framework/Test.php b/vendor/phpunit/phpunit/src/Framework/Test.php
index 77a25b5..0b68b3d 100644
--- a/vendor/phpunit/phpunit/src/Framework/Test.php
+++ b/vendor/phpunit/phpunit/src/Framework/Test.php
@@ -18,7 +18,8 @@
     /**
      * Runs a test and collects its result in a TestResult instance.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
      */
     public function run(PHPUnit_Framework_TestResult $result = null);
diff --git a/vendor/phpunit/phpunit/src/Framework/TestCase.php b/vendor/phpunit/phpunit/src/Framework/TestCase.php
index ea65fbc..6ee5fae 100644
--- a/vendor/phpunit/phpunit/src/Framework/TestCase.php
+++ b/vendor/phpunit/phpunit/src/Framework/TestCase.php
@@ -313,6 +313,7 @@ public function count()
      * Returns the annotations for this test.
      *
      * @return array
+     *
      * @since Method available since Release 3.4.0
      */
     public function getAnnotations()
@@ -326,7 +327,8 @@ public function getAnnotations()
     /**
      * Gets the name of a TestCase.
      *
-     * @param  bool   $withDataSet
+     * @param bool $withDataSet
+     *
      * @return string
      */
     public function getName($withDataSet = true)
@@ -342,6 +344,7 @@ public function getName($withDataSet = true)
      * Returns the size of the test.
      *
      * @return int
+     *
      * @since  Method available since Release 3.6.0
      */
     public function getSize()
@@ -354,6 +357,7 @@ public function getSize()
 
     /**
      * @return string
+     *
      * @since  Method available since Release 3.6.0
      */
     public function getActualOutput()
@@ -367,6 +371,7 @@ public function getActualOutput()
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 3.6.0
      */
     public function hasOutput()
@@ -384,7 +389,9 @@ public function hasOutput()
 
     /**
      * @param string $expectedRegex
+     *
      * @since Method available since Release 3.6.0
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function expectOutputRegex($expectedRegex)
@@ -400,6 +407,7 @@ public function expectOutputRegex($expectedRegex)
 
     /**
      * @param string $expectedString
+     *
      * @since Method available since Release 3.6.0
      */
     public function expectOutputString($expectedString)
@@ -415,6 +423,7 @@ public function expectOutputString($expectedString)
 
     /**
      * @return bool
+     *
      * @since Method available since Release 3.6.5
      * @deprecated
      */
@@ -425,6 +434,7 @@ public function hasPerformedExpectationsOnOutput()
 
     /**
      * @return bool
+     *
      * @since Method available since Release 4.3.3
      */
     public function hasExpectationOnOutput()
@@ -434,6 +444,7 @@ public function hasExpectationOnOutput()
 
     /**
      * @return string
+     *
      * @since  Method available since Release 3.2.0
      */
     public function getExpectedException()
@@ -445,6 +456,7 @@ public function getExpectedException()
      * @param mixed  $exceptionName
      * @param string $exceptionMessage
      * @param int    $exceptionCode
+     *
      * @since  Method available since Release 3.2.0
      */
     public function setExpectedException($exceptionName, $exceptionMessage = '', $exceptionCode = null)
@@ -458,6 +470,7 @@ public function setExpectedException($exceptionName, $exceptionMessage = '', $ex
      * @param mixed  $exceptionName
      * @param string $exceptionMessageRegExp
      * @param int    $exceptionCode
+     *
      * @since Method available since Release 4.3.0
      */
     public function setExpectedExceptionRegExp($exceptionName, $exceptionMessageRegExp = '', $exceptionCode = null)
@@ -499,6 +512,7 @@ protected function setExpectedExceptionFromAnnotation()
 
     /**
      * @param bool $useErrorHandler
+     *
      * @since Method available since Release 3.4.0
      */
     public function setUseErrorHandler($useErrorHandler)
@@ -547,6 +561,7 @@ protected function checkRequirements()
      * Returns the status of this test.
      *
      * @return int
+     *
      * @since  Method available since Release 3.1.0
      */
     public function getStatus()
@@ -558,6 +573,7 @@ public function getStatus()
      * Returns the status message of this test.
      *
      * @return string
+     *
      * @since  Method available since Release 3.3.0
      */
     public function getStatusMessage()
@@ -569,6 +585,7 @@ public function getStatusMessage()
      * Returns whether or not this test has failed.
      *
      * @return bool
+     *
      * @since  Method available since Release 3.0.0
      */
     public function hasFailed()
@@ -583,8 +600,10 @@ public function hasFailed()
      * Runs the test case and collects the results in a TestResult object.
      * If no TestResult object is passed a new one will be created.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function run(PHPUnit_Framework_TestResult $result = null)
@@ -864,6 +883,7 @@ public function runBare()
      * Override to run the test and assert its state.
      *
      * @return mixed
+     *
      * @throws Exception|PHPUnit_Framework_Exception
      * @throws PHPUnit_Framework_Exception
      */
@@ -1018,6 +1038,7 @@ public function setName($name)
      * Sets the dependencies of a TestCase.
      *
      * @param array $dependencies
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setDependencies(array $dependencies)
@@ -1029,6 +1050,7 @@ public function setDependencies(array $dependencies)
      * Returns true if the tests has dependencies
      *
      * @return bool
+     *
      * @since Method available since Release 4.0.0
      */
     public function hasDependencies()
@@ -1040,6 +1062,7 @@ public function hasDependencies()
      * Sets
      *
      * @param array $dependencyInput
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setDependencyInput(array $dependencyInput)
@@ -1049,6 +1072,7 @@ public function setDependencyInput(array $dependencyInput)
 
     /**
      * @param bool $disallowChangesToGlobalState
+     *
      * @since Method available since Release 4.6.0
      */
     public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
@@ -1060,6 +1084,7 @@ public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
      * Calling this method in setUp() has no effect!
      *
      * @param bool $backupGlobals
+     *
      * @since  Method available since Release 3.3.0
      */
     public function setBackupGlobals($backupGlobals)
@@ -1073,6 +1098,7 @@ public function setBackupGlobals($backupGlobals)
      * Calling this method in setUp() has no effect!
      *
      * @param bool $backupStaticAttributes
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setBackupStaticAttributes($backupStaticAttributes)
@@ -1084,8 +1110,10 @@ public function setBackupStaticAttributes($backupStaticAttributes)
     }
 
     /**
-     * @param  bool                        $runTestInSeparateProcess
+     * @param bool $runTestInSeparateProcess
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setRunTestInSeparateProcess($runTestInSeparateProcess)
@@ -1100,8 +1128,10 @@ public function setRunTestInSeparateProcess($runTestInSeparateProcess)
     }
 
     /**
-     * @param  bool                        $preserveGlobalState
+     * @param bool $preserveGlobalState
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setPreserveGlobalState($preserveGlobalState)
@@ -1114,8 +1144,10 @@ public function setPreserveGlobalState($preserveGlobalState)
     }
 
     /**
-     * @param  bool                        $inIsolation
+     * @param bool $inIsolation
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setInIsolation($inIsolation)
@@ -1129,6 +1161,7 @@ public function setInIsolation($inIsolation)
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 4.3.0
      */
     public function isInIsolation()
@@ -1138,6 +1171,7 @@ public function isInIsolation()
 
     /**
      * @return mixed
+     *
      * @since  Method available since Release 3.4.0
      */
     public function getResult()
@@ -1147,6 +1181,7 @@ public function getResult()
 
     /**
      * @param mixed $result
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setResult($result)
@@ -1155,8 +1190,10 @@ public function setResult($result)
     }
 
     /**
-     * @param  callable                    $callback
+     * @param callable $callback
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since Method available since Release 3.6.0
      */
     public function setOutputCallback($callback)
@@ -1170,6 +1207,7 @@ public function setOutputCallback($callback)
 
     /**
      * @return PHPUnit_Framework_TestResult
+     *
      * @since  Method available since Release 3.5.7
      */
     public function getTestResultObject()
@@ -1179,6 +1217,7 @@ public function getTestResultObject()
 
     /**
      * @param PHPUnit_Framework_TestResult $result
+     *
      * @since Method available since Release 3.6.0
      */
     public function setTestResultObject(PHPUnit_Framework_TestResult $result)
@@ -1191,9 +1230,11 @@ public function setTestResultObject(PHPUnit_Framework_TestResult $result)
      * resets the modified php.ini setting to its original value after the
      * test is run.
      *
-     * @param  string                      $varName
-     * @param  string                      $newValue
+     * @param string $varName
+     * @param string $newValue
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.0.0
      */
     protected function iniSet($varName, $newValue)
@@ -1221,9 +1262,11 @@ protected function iniSet($varName, $newValue)
      * This method is a wrapper for the setlocale() function that automatically
      * resets the locale to its original value after the test is run.
      *
-     * @param  int                         $category
-     * @param  string                      $locale
+     * @param int    $category
+     * @param string $locale
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.1.0
      */
     protected function setLocale()
@@ -1269,20 +1312,23 @@ protected function setLocale()
     /**
      * Returns a mock object for the specified class.
      *
-     * @param  string                                  $originalClassName       Name of the class to mock.
-     * @param  array|null                              $methods                 When provided, only methods whose names are in the array
-     *                                                                          are replaced with a configurable test double. The behavior
-     *                                                                          of the other methods is not changed.
-     *                                                                          Providing null means that no methods will be replaced.
-     * @param  array                                   $arguments               Parameters to pass to the original class' constructor.
-     * @param  string                                  $mockClassName           Class name for the generated test double class.
-     * @param  bool                                    $callOriginalConstructor Can be used to disable the call to the original class' constructor.
-     * @param  bool                                    $callOriginalClone       Can be used to disable the call to the original class' clone constructor.
-     * @param  bool                                    $callAutoload            Can be used to disable __autoload() during the generation of the test double class.
-     * @param  bool                                    $cloneArguments
-     * @param  bool                                    $callOriginalMethods
+     * @param string     $originalClassName       Name of the class to mock.
+     * @param array|null $methods                 When provided, only methods whose names are in the array
+     *                                            are replaced with a configurable test double. The behavior
+     *                                            of the other methods is not changed.
+     *                                            Providing null means that no methods will be replaced.
+     * @param array      $arguments               Parameters to pass to the original class' constructor.
+     * @param string     $mockClassName           Class name for the generated test double class.
+     * @param bool       $callOriginalConstructor Can be used to disable the call to the original class' constructor.
+     * @param bool       $callOriginalClone       Can be used to disable the call to the original class' clone constructor.
+     * @param bool       $callAutoload            Can be used to disable __autoload() during the generation of the test double class.
+     * @param bool       $cloneArguments
+     * @param bool       $callOriginalMethods
+     *
      * @return PHPUnit_Framework_MockObject_MockObject
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.0.0
      */
     public function getMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false, $callOriginalMethods = false)
@@ -1307,8 +1353,10 @@ public function getMock($originalClassName, $methods = array(), array $arguments
     /**
      * Returns a builder object to create mock objects using a fluent interface.
      *
-     * @param  string                                   $className
+     * @param string $className
+     *
      * @return PHPUnit_Framework_MockObject_MockBuilder
+     *
      * @since  Method available since Release 3.5.0
      */
     public function getMockBuilder($className)
@@ -1319,16 +1367,19 @@ public function getMockBuilder($className)
     /**
      * Mocks the specified class and returns the name of the mocked class.
      *
-     * @param  string                      $originalClassName
-     * @param  array                       $methods
-     * @param  array                       $arguments
-     * @param  string                      $mockClassName
-     * @param  bool                        $callOriginalConstructor
-     * @param  bool                        $callOriginalClone
-     * @param  bool                        $callAutoload
-     * @param  bool                        $cloneArguments
+     * @param string $originalClassName
+     * @param array  $methods
+     * @param array  $arguments
+     * @param string $mockClassName
+     * @param bool   $callOriginalConstructor
+     * @param bool   $callOriginalClone
+     * @param bool   $callAutoload
+     * @param bool   $cloneArguments
+     *
      * @return string
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.5.0
      */
     protected function getMockClass($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false)
@@ -1352,16 +1403,19 @@ protected function getMockClass($originalClassName, $methods = array(), array $a
      * methods of the class mocked. Concrete methods are not mocked by default.
      * To mock concrete methods, use the 7th parameter ($mockedMethods).
      *
-     * @param  string                                  $originalClassName
-     * @param  array                                   $arguments
-     * @param  string                                  $mockClassName
-     * @param  bool                                    $callOriginalConstructor
-     * @param  bool                                    $callOriginalClone
-     * @param  bool                                    $callAutoload
-     * @param  array                                   $mockedMethods
-     * @param  bool                                    $cloneArguments
+     * @param string $originalClassName
+     * @param array  $arguments
+     * @param string $mockClassName
+     * @param bool   $callOriginalConstructor
+     * @param bool   $callOriginalClone
+     * @param bool   $callAutoload
+     * @param array  $mockedMethods
+     * @param bool   $cloneArguments
+     *
      * @return PHPUnit_Framework_MockObject_MockObject
+     *
      * @since  Method available since Release 3.4.0
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false)
@@ -1385,13 +1439,15 @@ public function getMockForAbstractClass($originalClassName, array $arguments = a
     /**
      * Returns a mock object based on the given WSDL file.
      *
-     * @param  string                                  $wsdlFile
-     * @param  string                                  $originalClassName
-     * @param  string                                  $mockClassName
-     * @param  array                                   $methods
-     * @param  bool                                    $callOriginalConstructor
-     * @param  array                                   $options                 An array of options passed to SOAPClient::_construct
+     * @param string $wsdlFile
+     * @param string $originalClassName
+     * @param string $mockClassName
+     * @param array  $methods
+     * @param bool   $callOriginalConstructor
+     * @param array  $options                 An array of options passed to SOAPClient::_construct
+     *
      * @return PHPUnit_Framework_MockObject_MockObject
+     *
      * @since  Method available since Release 3.4.0
      */
     protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = array(), $callOriginalConstructor = true, array $options = array())
@@ -1427,16 +1483,19 @@ protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClas
      * of the trait mocked. Concrete methods to mock can be specified with the
      * `$mockedMethods` parameter.
      *
-     * @param  string                                  $traitName
-     * @param  array                                   $arguments
-     * @param  string                                  $mockClassName
-     * @param  bool                                    $callOriginalConstructor
-     * @param  bool                                    $callOriginalClone
-     * @param  bool                                    $callAutoload
-     * @param  array                                   $mockedMethods
-     * @param  bool                                    $cloneArguments
+     * @param string $traitName
+     * @param array  $arguments
+     * @param string $mockClassName
+     * @param bool   $callOriginalConstructor
+     * @param bool   $callOriginalClone
+     * @param bool   $callAutoload
+     * @param array  $mockedMethods
+     * @param bool   $cloneArguments
+     *
      * @return PHPUnit_Framework_MockObject_MockObject
+     *
      * @since  Method available since Release 4.0.0
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function getMockForTrait($traitName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false)
@@ -1460,15 +1519,18 @@ public function getMockForTrait($traitName, array $arguments = array(), $mockCla
     /**
      * Returns an object for the specified trait.
      *
-     * @param  string $traitName
-     * @param  array  $arguments
-     * @param  string $traitClassName
-     * @param  bool   $callOriginalConstructor
-     * @param  bool   $callOriginalClone
-     * @param  bool   $callAutoload
-     * @param  bool   $cloneArguments
+     * @param string $traitName
+     * @param array  $arguments
+     * @param string $traitClassName
+     * @param bool   $callOriginalConstructor
+     * @param bool   $callOriginalClone
+     * @param bool   $callAutoload
+     * @param bool   $cloneArguments
+     *
      * @return object
+     *
      * @since  Method available since Release 3.6.0
+     *
      * @throws PHPUnit_Framework_Exception
      */
     protected function getObjectForTrait($traitName, array $arguments = array(), $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false)
@@ -1485,9 +1547,12 @@ protected function getObjectForTrait($traitName, array $arguments = array(), $tr
     }
 
     /**
-     * @param  string|null                       $classOrInterface
+     * @param string|null $classOrInterface
+     *
      * @return \Prophecy\Prophecy\ObjectProphecy
+     *
      * @throws \LogicException
+     *
      * @since  Method available since Release 4.5.0
      */
     protected function prophesize($classOrInterface = null)
@@ -1499,6 +1564,7 @@ protected function prophesize($classOrInterface = null)
      * Adds a value to the assertion counter.
      *
      * @param int $count
+     *
      * @since Method available since Release 3.3.3
      */
     public function addToAssertionCount($count)
@@ -1510,6 +1576,7 @@ public function addToAssertionCount($count)
      * Returns the number of assertions performed by this test.
      *
      * @return int
+     *
      * @since  Method available since Release 3.3.0
      */
     public function getNumAssertions()
@@ -1522,6 +1589,7 @@ public function getNumAssertions()
      * zero or more times.
      *
      * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function any()
@@ -1533,6 +1601,7 @@ public static function any()
      * Returns a matcher that matches when the method is never executed.
      *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function never()
@@ -1544,8 +1613,10 @@ public static function never()
      * Returns a matcher that matches when the method is executed
      * at least N times.
      *
-     * @param  int                                                      $requiredInvocations
+     * @param int $requiredInvocations
+     *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount
+     *
      * @since  Method available since Release 4.2.0
      */
     public static function atLeast($requiredInvocations)
@@ -1559,6 +1630,7 @@ public static function atLeast($requiredInvocations)
      * Returns a matcher that matches when the method is executed at least once.
      *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function atLeastOnce()
@@ -1570,6 +1642,7 @@ public static function atLeastOnce()
      * Returns a matcher that matches when the method is executed exactly once.
      *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function once()
@@ -1581,8 +1654,10 @@ public static function once()
      * Returns a matcher that matches when the method is executed
      * exactly $count times.
      *
-     * @param  int                                               $count
+     * @param int $count
+     *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function exactly($count)
@@ -1594,8 +1669,10 @@ public static function exactly($count)
      * Returns a matcher that matches when the method is executed
      * at most N times.
      *
-     * @param  int                                                     $allowedInvocations
+     * @param int $allowedInvocations
+     *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount
+     *
      * @since  Method available since Release 4.2.0
      */
     public static function atMost($allowedInvocations)
@@ -1609,8 +1686,10 @@ public static function atMost($allowedInvocations)
      * Returns a matcher that matches when the method is executed
      * at the given index.
      *
-     * @param  int                                                 $index
+     * @param int $index
+     *
      * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function at($index)
@@ -1619,8 +1698,10 @@ public static function at($index)
     }
 
     /**
-     * @param  mixed                                    $value
+     * @param mixed $value
+     *
      * @return PHPUnit_Framework_MockObject_Stub_Return
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function returnValue($value)
@@ -1629,8 +1710,10 @@ public static function returnValue($value)
     }
 
     /**
-     * @param  array                                            $valueMap
+     * @param array $valueMap
+     *
      * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap
+     *
      * @since  Method available since Release 3.6.0
      */
     public static function returnValueMap(array $valueMap)
@@ -1639,8 +1722,10 @@ public static function returnValueMap(array $valueMap)
     }
 
     /**
-     * @param  int                                              $argumentIndex
+     * @param int $argumentIndex
+     *
      * @return PHPUnit_Framework_MockObject_Stub_ReturnArgument
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function returnArgument($argumentIndex)
@@ -1651,8 +1736,10 @@ public static function returnArgument($argumentIndex)
     }
 
     /**
-     * @param  mixed                                            $callback
+     * @param mixed $callback
+     *
      * @return PHPUnit_Framework_MockObject_Stub_ReturnCallback
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function returnCallback($callback)
@@ -1666,6 +1753,7 @@ public static function returnCallback($callback)
      * This method is useful when mocking a fluent interface.
      *
      * @return PHPUnit_Framework_MockObject_Stub_ReturnSelf
+     *
      * @since  Method available since Release 3.6.0
      */
     public static function returnSelf()
@@ -1674,8 +1762,10 @@ public static function returnSelf()
     }
 
     /**
-     * @param  Exception                                   $exception
+     * @param Exception $exception
+     *
      * @return PHPUnit_Framework_MockObject_Stub_Exception
+     *
      * @since  Method available since Release 3.1.0
      */
     public static function throwException(Exception $exception)
@@ -1684,8 +1774,10 @@ public static function throwException(Exception $exception)
     }
 
     /**
-     * @param  mixed                                              $value, ...
+     * @param mixed $value, ...
+     *
      * @return PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function onConsecutiveCalls()
@@ -1698,8 +1790,10 @@ public static function onConsecutiveCalls()
     /**
      * Gets the data set description of a TestCase.
      *
-     * @param  bool   $includeData
+     * @param bool $includeData
+     *
      * @return string
+     *
      * @since  Method available since Release 3.3.0
      */
     protected function getDataSetAsString($includeData = true)
@@ -1861,7 +1955,9 @@ public static function tearDownAfterClass()
      * This method is called when a test method did not execute successfully.
      *
      * @param Exception $e
+     *
      * @since Method available since Release 3.4.0
+     *
      * @throws Exception
      */
     protected function onNotSuccessfulTest(Exception $e)
@@ -1873,6 +1969,7 @@ protected function onNotSuccessfulTest(Exception $e)
      * Performs custom preparations on the process isolation template.
      *
      * @param Text_Template $template
+     *
      * @since Method available since Release 3.4.0
      */
     protected function prepareTemplate(Text_Template $template)
@@ -1961,10 +2058,16 @@ private function restoreGlobalState()
         $backupGlobals = $this->backupGlobals === null || $this->backupGlobals === true;
 
         if ($this->disallowChangesToGlobalState) {
-            $this->compareGlobalStateSnapshots(
-                $this->snapshot,
-                $this->createGlobalStateSnapshot($backupGlobals)
-            );
+            try {
+                $this->compareGlobalStateSnapshots(
+                    $this->snapshot,
+                    $this->createGlobalStateSnapshot($backupGlobals)
+                );
+            }
+
+            catch (PHPUnit_Framework_RiskyTestError $rte) {
+                // Intentionally left empty
+            }
         }
 
         $restorer = new Restorer;
@@ -1978,10 +2081,15 @@ private function restoreGlobalState()
         }
 
         $this->snapshot = null;
+
+        if (isset($rte)) {
+            throw $rte;
+        }
     }
 
     /**
-     * @param  bool     $backupGlobals
+     * @param bool $backupGlobals
+     *
      * @return Snapshot
      */
     private function createGlobalStateSnapshot($backupGlobals)
@@ -2025,8 +2133,9 @@ private function createGlobalStateSnapshot($backupGlobals)
     }
 
     /**
-     * @param  Snapshot                         $before
-     * @param  Snapshot                         $after
+     * @param Snapshot $before
+     * @param Snapshot $after
+     *
      * @throws PHPUnit_Framework_RiskyTestError
      */
     private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after)
@@ -2057,9 +2166,10 @@ private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after)
     }
 
     /**
-     * @param  array                            $before
-     * @param  array                            $after
-     * @param  string                           $header
+     * @param array  $before
+     * @param array  $after
+     * @param string $header
+     *
      * @throws PHPUnit_Framework_RiskyTestError
      */
     private function compareGlobalStateSnapshotPart(array $before, array $after, $header)
@@ -2081,6 +2191,7 @@ private function compareGlobalStateSnapshotPart(array $before, array $after, $he
 
     /**
      * @return Prophecy\Prophet
+     *
      * @since Method available since Release 4.5.0
      */
     private function getProphet()
diff --git a/vendor/phpunit/phpunit/src/Framework/TestFailure.php b/vendor/phpunit/phpunit/src/Framework/TestFailure.php
index df1d5ef..ef3d9cb 100644
--- a/vendor/phpunit/phpunit/src/Framework/TestFailure.php
+++ b/vendor/phpunit/phpunit/src/Framework/TestFailure.php
@@ -67,6 +67,7 @@ public function toString()
      * Returns a description for the thrown exception.
      *
      * @return string
+     *
      * @since  Method available since Release 3.4.0
      */
     public function getExceptionAsString()
@@ -77,8 +78,10 @@ public function getExceptionAsString()
     /**
      * Returns a description for an exception.
      *
-     * @param  Exception $e
+     * @param Exception $e
+     *
      * @return string
+     *
      * @since  Method available since Release 3.2.0
      */
     public static function exceptionToString(Exception $e)
@@ -108,6 +111,7 @@ public static function exceptionToString(Exception $e)
      * Returns the name of the failing test (including data set, if any).
      *
      * @return string
+     *
      * @since  Method available since Release 4.3.0
      */
     public function getTestName()
diff --git a/vendor/phpunit/phpunit/src/Framework/TestListener.php b/vendor/phpunit/phpunit/src/Framework/TestListener.php
index 056cab3..6baab55 100644
--- a/vendor/phpunit/phpunit/src/Framework/TestListener.php
+++ b/vendor/phpunit/phpunit/src/Framework/TestListener.php
@@ -48,6 +48,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time);
@@ -58,6 +59,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time);
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time);
@@ -66,6 +68,7 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time
      * A test suite started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite);
@@ -74,6 +77,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite);
      * A test suite ended.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite);
diff --git a/vendor/phpunit/phpunit/src/Framework/TestResult.php b/vendor/phpunit/phpunit/src/Framework/TestResult.php
index 41c5d0a..8da7c35 100644
--- a/vendor/phpunit/phpunit/src/Framework/TestResult.php
+++ b/vendor/phpunit/phpunit/src/Framework/TestResult.php
@@ -285,6 +285,7 @@ public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_Asser
      * Informs the result that a testsuite will be started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -302,6 +303,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
      * Informs the result that a testsuite was completed.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -358,6 +360,7 @@ public function endTest(PHPUnit_Framework_Test $test, $time)
      * Returns true if no risky test occurred.
      *
      * @return bool
+     *
      * @since  Method available since Release 4.0.0
      */
     public function allHarmless()
@@ -369,6 +372,7 @@ public function allHarmless()
      * Gets the number of risky tests.
      *
      * @return int
+     *
      * @since  Method available since Release 4.0.0
      */
     public function riskyCount()
@@ -400,6 +404,7 @@ public function notImplementedCount()
      * Returns an Enumeration for the risky tests.
      *
      * @return array
+     *
      * @since  Method available since Release 4.0.0
      */
     public function risky()
@@ -421,6 +426,7 @@ public function notImplemented()
      * Returns true if no test has been skipped.
      *
      * @return bool
+     *
      * @since  Method available since Release 3.0.0
      */
     public function noneSkipped()
@@ -432,6 +438,7 @@ public function noneSkipped()
      * Gets the number of skipped tests.
      *
      * @return int
+     *
      * @since  Method available since Release 3.0.0
      */
     public function skippedCount()
@@ -443,6 +450,7 @@ public function skippedCount()
      * Returns an Enumeration for the skipped tests.
      *
      * @return array
+     *
      * @since  Method available since Release 3.0.0
      */
     public function skipped()
@@ -494,6 +502,7 @@ public function failures()
      * Returns the names of the tests that have passed.
      *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     public function passed()
@@ -505,6 +514,7 @@ public function passed()
      * Returns the (top) test suite.
      *
      * @return PHPUnit_Framework_TestSuite
+     *
      * @since  Method available since Release 3.0.0
      */
     public function topTestSuite()
@@ -516,6 +526,7 @@ public function topTestSuite()
      * Returns whether code coverage information should be collected.
      *
      * @return bool If code coverage should be collected
+     *
      * @since  Method available since Release 3.2.0
      */
     public function getCollectCodeCoverageInformation()
@@ -754,6 +765,7 @@ public function stop()
      * Returns the PHP_CodeCoverage object.
      *
      * @return PHP_CodeCoverage
+     *
      * @since  Method available since Release 3.5.0
      */
     public function getCodeCoverage()
@@ -765,6 +777,7 @@ public function getCodeCoverage()
      * Sets the PHP_CodeCoverage object.
      *
      * @param PHP_CodeCoverage $codeCoverage
+     *
      * @since Method available since Release 3.6.0
      */
     public function setCodeCoverage(PHP_CodeCoverage $codeCoverage)
@@ -775,8 +788,10 @@ public function setCodeCoverage(PHP_CodeCoverage $codeCoverage)
     /**
      * Enables or disables the error-to-exception conversion.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.2.14
      */
     public function convertErrorsToExceptions($flag)
@@ -792,6 +807,7 @@ public function convertErrorsToExceptions($flag)
      * Returns the error-to-exception conversion setting.
      *
      * @return bool
+     *
      * @since  Method available since Release 3.4.0
      */
     public function getConvertErrorsToExceptions()
@@ -802,8 +818,10 @@ public function getConvertErrorsToExceptions()
     /**
      * Enables or disables the stopping when an error occurs.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.5.0
      */
     public function stopOnError($flag)
@@ -818,8 +836,10 @@ public function stopOnError($flag)
     /**
      * Enables or disables the stopping when a failure occurs.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.1.0
      */
     public function stopOnFailure($flag)
@@ -832,8 +852,10 @@ public function stopOnFailure($flag)
     }
 
     /**
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public function beStrictAboutTestsThatDoNotTestAnything($flag)
@@ -847,6 +869,7 @@ public function beStrictAboutTestsThatDoNotTestAnything($flag)
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 4.0.0
      */
     public function isStrictAboutTestsThatDoNotTestAnything()
@@ -855,8 +878,10 @@ public function isStrictAboutTestsThatDoNotTestAnything()
     }
 
     /**
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public function beStrictAboutOutputDuringTests($flag)
@@ -870,6 +895,7 @@ public function beStrictAboutOutputDuringTests($flag)
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 4.0.0
      */
     public function isStrictAboutOutputDuringTests()
@@ -878,8 +904,10 @@ public function isStrictAboutOutputDuringTests()
     }
 
     /**
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public function beStrictAboutTestSize($flag)
@@ -893,6 +921,7 @@ public function beStrictAboutTestSize($flag)
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 4.0.0
      */
     public function isStrictAboutTestSize()
@@ -901,8 +930,10 @@ public function isStrictAboutTestSize()
     }
 
     /**
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.2.0
      */
     public function beStrictAboutTodoAnnotatedTests($flag)
@@ -916,6 +947,7 @@ public function beStrictAboutTodoAnnotatedTests($flag)
 
     /**
      * @return bool
+     *
      * @since  Method available since Release 4.2.0
      */
     public function isStrictAboutTodoAnnotatedTests()
@@ -926,8 +958,10 @@ public function isStrictAboutTodoAnnotatedTests()
     /**
      * Enables or disables the stopping for risky tests.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 4.0.0
      */
     public function stopOnRisky($flag)
@@ -942,8 +976,10 @@ public function stopOnRisky($flag)
     /**
      * Enables or disables the stopping for incomplete tests.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.5.0
      */
     public function stopOnIncomplete($flag)
@@ -958,8 +994,10 @@ public function stopOnIncomplete($flag)
     /**
      * Enables or disables the stopping for skipped tests.
      *
-     * @param  bool                        $flag
+     * @param bool $flag
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.1.0
      */
     public function stopOnSkipped($flag)
@@ -994,8 +1032,10 @@ public function wasSuccessful()
     /**
      * Sets the timeout for small tests.
      *
-     * @param  int                         $timeout
+     * @param int $timeout
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.6.0
      */
     public function setTimeoutForSmallTests($timeout)
@@ -1010,8 +1050,10 @@ public function setTimeoutForSmallTests($timeout)
     /**
      * Sets the timeout for medium tests.
      *
-     * @param  int                         $timeout
+     * @param int $timeout
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.6.0
      */
     public function setTimeoutForMediumTests($timeout)
@@ -1026,8 +1068,10 @@ public function setTimeoutForMediumTests($timeout)
     /**
      * Sets the timeout for large tests.
      *
-     * @param  int                         $timeout
+     * @param int $timeout
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.6.0
      */
     public function setTimeoutForLargeTests($timeout)
@@ -1042,8 +1086,9 @@ public function setTimeoutForLargeTests($timeout)
     /**
      * Returns the class hierarchy for a given class.
      *
-     * @param  string $className
-     * @param  bool   $asReflectionObjects
+     * @param string $className
+     * @param bool   $asReflectionObjects
+     *
      * @return array
      */
     protected function getHierarchy($className, $asReflectionObjects = false)
diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/vendor/phpunit/phpunit/src/Framework/TestSuite.php
index 7674f2d..8403633 100644
--- a/vendor/phpunit/phpunit/src/Framework/TestSuite.php
+++ b/vendor/phpunit/phpunit/src/Framework/TestSuite.php
@@ -131,8 +131,9 @@ class PHPUnit_Framework_TestSuite implements PHPUnit_Framework_Test, PHPUnit_Fra
      *     name of an existing class) or constructs an empty TestSuite
      *     with the given name.
      *
-     * @param  mixed                       $theClass
-     * @param  string                      $name
+     * @param mixed  $theClass
+     * @param string $name
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($theClass = '', $name = '')
@@ -254,7 +255,8 @@ public function addTest(PHPUnit_Framework_Test $test, $groups = array())
     /**
      * Adds the tests from the given class to the suite.
      *
-     * @param  mixed                       $testClass
+     * @param mixed $testClass
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function addTestSuite($testClass)
@@ -307,8 +309,10 @@ public function addTestSuite($testClass)
      * added, a <code>PHPUnit_Framework_Warning</code> will be created instead,
      * leaving the current test run untouched.
      *
-     * @param  string                      $filename
+     * @param string $filename
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 2.3.0
      */
     public function addTestFile($filename)
@@ -385,8 +389,10 @@ public function addTestFile($filename)
     /**
      * Wrapper for addTestFile() that adds multiple test files.
      *
-     * @param  array|Iterator              $filenames
+     * @param array|Iterator $filenames
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 2.3.0
      */
     public function addTestFiles($filenames)
@@ -407,7 +413,8 @@ public function addTestFiles($filenames)
     /**
      * Counts the number of test cases that will be run by this test.
      *
-     * @param  bool $preferCache Indicates if cache is preferred.
+     * @param bool $preferCache Indicates if cache is preferred.
+     *
      * @return int
      */
     public function count($preferCache = false)
@@ -426,9 +433,11 @@ public function count($preferCache = false)
     }
 
     /**
-     * @param  ReflectionClass             $theClass
-     * @param  string                      $name
+     * @param ReflectionClass $theClass
+     * @param string          $name
+     *
      * @return PHPUnit_Framework_Test
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public static function createTest(ReflectionClass $theClass, $name)
@@ -628,6 +637,7 @@ public function getName()
      * Returns the test groups of the suite.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.0
      */
     public function getGroups()
@@ -644,6 +654,7 @@ public function getGroupDetails()
      * Set tests groups of the test case
      *
      * @param array $groups
+     *
      * @since Method available since Release 4.0.0
      */
     public function setGroupDetails(array $groups)
@@ -654,7 +665,8 @@ public function setGroupDetails(array $groups)
     /**
      * Runs the tests and collects their result in a TestResult.
      *
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @return PHPUnit_Framework_TestResult
      */
     public function run(PHPUnit_Framework_TestResult $result = null)
@@ -749,8 +761,10 @@ class_exists($this->name, false) &&
     }
 
     /**
-     * @param  bool                        $runTestInSeparateProcess
+     * @param bool $runTestInSeparateProcess
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.7.0
      */
     public function setRunTestInSeparateProcess($runTestInSeparateProcess)
@@ -766,6 +780,7 @@ public function setRunTestInSeparateProcess($runTestInSeparateProcess)
      * Runs a test.
      *
      * @deprecated
+     *
      * @param PHPUnit_Framework_Test       $test
      * @param PHPUnit_Framework_TestResult $result
      */
@@ -788,6 +803,7 @@ public function setName($name)
      * Returns the test at the given index.
      *
      * @param  int
+     *
      * @return PHPUnit_Framework_Test
      */
     public function testAt($index)
@@ -813,6 +829,7 @@ public function tests()
      * Set tests of the test suite
      *
      * @param array $tests
+     *
      * @since Method available since Release 4.0.0
      */
     public function setTests(array $tests)
@@ -823,8 +840,10 @@ public function setTests(array $tests)
     /**
      * Mark the test suite as skipped.
      *
-     * @param  string                                  $message
+     * @param string $message
+     *
      * @throws PHPUnit_Framework_SkippedTestSuiteError
+     *
      * @since  Method available since Release 3.0.0
      */
     public function markTestSuiteSkipped($message = '')
@@ -874,7 +893,8 @@ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $metho
     }
 
     /**
-     * @param  ReflectionMethod $method
+     * @param ReflectionMethod $method
+     *
      * @return bool
      */
     public static function isTestMethod(ReflectionMethod $method)
@@ -892,7 +912,8 @@ public static function isTestMethod(ReflectionMethod $method)
     }
 
     /**
-     * @param  string                    $message
+     * @param string $message
+     *
      * @return PHPUnit_Framework_Warning
      */
     protected static function warning($message)
@@ -901,10 +922,12 @@ protected static function warning($message)
     }
 
     /**
-     * @param  string                            $class
-     * @param  string                            $methodName
-     * @param  string                            $message
+     * @param string $class
+     * @param string $methodName
+     * @param string $message
+     *
      * @return PHPUnit_Framework_SkippedTestCase
+     *
      * @since  Method available since Release 4.3.0
      */
     protected static function skipTest($class, $methodName, $message)
@@ -913,10 +936,12 @@ protected static function skipTest($class, $methodName, $message)
     }
 
     /**
-     * @param  string                               $class
-     * @param  string                               $methodName
-     * @param  string                               $message
+     * @param string $class
+     * @param string $methodName
+     * @param string $message
+     *
      * @return PHPUnit_Framework_IncompleteTestCase
+     *
      * @since  Method available since Release 4.3.0
      */
     protected static function incompleteTest($class, $methodName, $message)
@@ -926,6 +951,7 @@ protected static function incompleteTest($class, $methodName, $message)
 
     /**
      * @param bool $disallowChangesToGlobalState
+     *
      * @since  Method available since Release 4.6.0
      */
     public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
@@ -937,6 +963,7 @@ public function setDisallowChangesToGlobalState($disallowChangesToGlobalState)
 
     /**
      * @param bool $backupGlobals
+     *
      * @since  Method available since Release 3.3.0
      */
     public function setBackupGlobals($backupGlobals)
@@ -948,6 +975,7 @@ public function setBackupGlobals($backupGlobals)
 
     /**
      * @param bool $backupStaticAttributes
+     *
      * @since  Method available since Release 3.4.0
      */
     public function setBackupStaticAttributes($backupStaticAttributes)
@@ -962,6 +990,7 @@ public function setBackupStaticAttributes($backupStaticAttributes)
      * Returns an iterator for this test suite.
      *
      * @return RecursiveIteratorIterator
+     *
      * @since  Method available since Release 3.1.0
      */
     public function getIterator()
diff --git a/vendor/phpunit/phpunit/src/Framework/Warning.php b/vendor/phpunit/phpunit/src/Framework/Warning.php
index 6ac3cdc..8c7cef6 100644
--- a/vendor/phpunit/phpunit/src/Framework/Warning.php
+++ b/vendor/phpunit/phpunit/src/Framework/Warning.php
@@ -59,6 +59,7 @@ protected function runTest()
 
     /**
      * @return string
+     *
      * @since  Method available since Release 3.0.0
      */
     public function getMessage()
@@ -70,6 +71,7 @@ public function getMessage()
      * Returns a string representation of the test case.
      *
      * @return string
+     *
      * @since  Method available since Release 3.4.0
      */
     public function toString()
diff --git a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
index f839cd0..15805dc 100644
--- a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
+++ b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
@@ -38,9 +38,10 @@ public function getLoader()
      * This is a template method, subclasses override
      * the runFailed() and clearStatus() methods.
      *
-     * @param  string                 $suiteClassName
-     * @param  string                 $suiteClassFile
-     * @param  mixed                  $suffixes
+     * @param string $suiteClassName
+     * @param string $suiteClassFile
+     * @param mixed  $suffixes
+     *
      * @return PHPUnit_Framework_Test
      */
     public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '')
@@ -110,8 +111,9 @@ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '')
     /**
      * Returns the loaded ReflectionClass for a suite name.
      *
-     * @param  string          $suiteClassName
-     * @param  string          $suiteClassFile
+     * @param string $suiteClassName
+     * @param string $suiteClassFile
+     *
      * @return ReflectionClass
      */
     protected function loadSuiteClass($suiteClassName, $suiteClassFile = '')
diff --git a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
index e7b802a..3338a73 100644
--- a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
+++ b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
@@ -16,9 +16,11 @@
 class PHPUnit_Runner_StandardTestSuiteLoader implements PHPUnit_Runner_TestSuiteLoader
 {
     /**
-     * @param  string                      $suiteClassName
-     * @param  string                      $suiteClassFile
+     * @param string $suiteClassName
+     * @param string $suiteClassFile
+     *
      * @return ReflectionClass
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function load($suiteClassName, $suiteClassFile = '')
@@ -105,7 +107,8 @@ public function load($suiteClassName, $suiteClassFile = '')
     }
 
     /**
-     * @param  ReflectionClass $aClass
+     * @param ReflectionClass $aClass
+     *
      * @return ReflectionClass
      */
     public function reload(ReflectionClass $aClass)
diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
index 572153a..3eea6e0 100644
--- a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
+++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
@@ -16,14 +16,16 @@
 interface PHPUnit_Runner_TestSuiteLoader
 {
     /**
-     * @param  string          $suiteClassName
-     * @param  string          $suiteClassFile
+     * @param string $suiteClassName
+     * @param string $suiteClassFile
+     *
      * @return ReflectionClass
      */
     public function load($suiteClassName, $suiteClassFile = '');
 
     /**
-     * @param  ReflectionClass $aClass
+     * @param ReflectionClass $aClass
+     *
      * @return ReflectionClass
      */
     public function reload(ReflectionClass $aClass);
diff --git a/vendor/phpunit/phpunit/src/Runner/Version.php b/vendor/phpunit/phpunit/src/Runner/Version.php
index 58e3390..2b7f7f0 100644
--- a/vendor/phpunit/phpunit/src/Runner/Version.php
+++ b/vendor/phpunit/phpunit/src/Runner/Version.php
@@ -30,7 +30,7 @@ public static function id()
         }
 
         if (self::$version === null) {
-            $version       = new SebastianBergmann\Version('4.8.11', dirname(dirname(__DIR__)));
+            $version       = new SebastianBergmann\Version('4.8.18', dirname(dirname(__DIR__)));
             self::$version = $version->getVersion();
         }
 
@@ -39,6 +39,16 @@ public static function id()
 
     /**
      * @return string
+     *
+     * @since Method available since Release 4.8.13
+     */
+    public static function series()
+    {
+        return implode('.', array_slice(explode('.', self::id()), 0, 2));
+    }
+
+    /**
+     * @return string
      */
     public static function getVersionString()
     {
@@ -47,6 +57,7 @@ public static function getVersionString()
 
     /**
      * @return string
+     *
      * @since  Method available since Release 4.0.0
      */
     public static function getReleaseChannel()
diff --git a/vendor/phpunit/phpunit/src/TextUI/Command.php b/vendor/phpunit/phpunit/src/TextUI/Command.php
index 6a73409..c6d6c22 100644
--- a/vendor/phpunit/phpunit/src/TextUI/Command.php
+++ b/vendor/phpunit/phpunit/src/TextUI/Command.php
@@ -101,8 +101,9 @@ public static function main($exit = true)
     }
 
     /**
-     * @param  array $argv
-     * @param  bool  $exit
+     * @param array $argv
+     * @param bool  $exit
+     *
      * @return int
      */
     public function run(array $argv, $exit = true)
@@ -169,6 +170,7 @@ public function run(array $argv, $exit = true)
      * Create a TestRunner, override in subclasses.
      *
      * @return PHPUnit_TextUI_TestRunner
+     *
      * @since  Method available since Release 3.6.0
      */
     protected function createRunner()
@@ -227,6 +229,8 @@ protected function handleArguments(array $argv)
             $this->longOptions['check-version'] = null;
             $this->longOptions['selfupdate']    = null;
             $this->longOptions['self-update']   = null;
+            $this->longOptions['selfupgrade']   = null;
+            $this->longOptions['self-upgrade']  = null;
         }
 
         try {
@@ -484,6 +488,15 @@ protected function handleArguments(array $argv)
                     $this->handleSelfUpdate();
                     break;
 
+                case '--selfupgrade':
+                case '--self-upgrade':
+                    $this->handleSelfUpdate(true);
+                    break;
+
+                case '--whitelist':
+                    $this->arguments['whitelist'] = $option[1];
+                    break;
+
                 default:
                     $optionName = str_replace('--', '', $option[0]);
 
@@ -665,8 +678,9 @@ protected function handleArguments(array $argv)
     /**
      * Handles the loading of the PHPUnit_Runner_TestSuiteLoader implementation.
      *
-     * @param  string                         $loaderClass
-     * @param  string                         $loaderFile
+     * @param string $loaderClass
+     * @param string $loaderFile
+     *
      * @return PHPUnit_Runner_TestSuiteLoader
      */
     protected function handleLoader($loaderClass, $loaderFile = '')
@@ -709,8 +723,9 @@ protected function handleLoader($loaderClass, $loaderFile = '')
     /**
      * Handles the loading of the PHPUnit_Util_Printer implementation.
      *
-     * @param  string               $printerClass
-     * @param  string               $printerFile
+     * @param string $printerClass
+     * @param string $printerFile
+     *
      * @return PHPUnit_Util_Printer
      */
     protected function handlePrinter($printerClass, $printerFile = '')
@@ -770,7 +785,7 @@ protected function handleBootstrap($filename)
     /**
      * @since Method available since Release 4.0.0
      */
-    protected function handleSelfUpdate()
+    protected function handleSelfUpdate($upgrade = false)
     {
         $this->printVersionString();
 
@@ -786,17 +801,28 @@ protected function handleSelfUpdate()
             exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
         }
 
-        if (PHP_VERSION_ID < 50600) {
-            $remoteFilename = sprintf('https://phar.phpunit.de/phpunit-old.phar');
+        if (!$upgrade) {
+            $remoteFilename = sprintf(
+                'https://phar.phpunit.de/phpunit-%s.phar',
+                file_get_contents(
+                    sprintf(
+                        'https://phar.phpunit.de/latest-version-of/phpunit-%s',
+                        PHPUnit_Runner_Version::series()
+                    )
+                )
+            );
         } else {
-            $remoteFilename = sprintf('https://phar.phpunit.de/phpunit.phar');
+            $remoteFilename = sprintf(
+                'https://phar.phpunit.de/phpunit%s.phar',
+                PHPUnit_Runner_Version::getReleaseChannel()
+            );
         }
 
         $tempFilename = tempnam(sys_get_temp_dir(), 'phpunit') . '.phar';
 
         // Workaround for https://bugs.php.net/bug.php?id=65538
         $caFile = dirname($tempFilename) . '/ca.pem';
-        copy(__PHPUNIT_PHAR_ROOT__ . '/phar/ca.pem', $caFile);
+        copy(__PHPUNIT_PHAR_ROOT__ . '/ca.pem', $caFile);
 
         print 'Updating the PHPUnit PHAR ... ';
 
@@ -858,7 +884,7 @@ protected function handleVersionCheck()
 
         if ($isOutdated) {
             print "You are not using the latest version of PHPUnit.\n";
-            print 'Use "phpunit --self-update" to install PHPUnit ' . $latestVersion . "\n";
+            print 'Use "phpunit --self-upgrade" to install PHPUnit ' . $latestVersion . "\n";
         } else {
             print "You are using the latest version of PHPUnit.\n";
         }
@@ -954,7 +980,8 @@ protected function showHelp()
 
         if (defined('__PHPUNIT_PHAR__')) {
             print "\n  --check-version           Check whether PHPUnit is the latest version.";
-            print "\n  --self-update             Update PHPUnit to the latest version.\n";
+            print "\n  --self-update             Update PHPUnit to the latest version within the same\n                            release series.\n";
+            print "\n  --self-upgrade            Upgrade PHPUnit to the latest version.\n";
         }
     }
 
diff --git a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
index 3fc8cbe..e4f02cd 100644
--- a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
+++ b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
@@ -108,12 +108,14 @@ class PHPUnit_TextUI_ResultPrinter extends PHPUnit_Util_Printer implements PHPUn
     /**
      * Constructor.
      *
-     * @param  mixed                       $out
-     * @param  bool                        $verbose
-     * @param  string                      $colors
-     * @param  bool                        $debug
-     * @param  int|string                  $numberOfColumns
+     * @param mixed      $out
+     * @param bool       $verbose
+     * @param string     $colors
+     * @param bool       $debug
+     * @param int|string $numberOfColumns
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.0.0
      */
     public function __construct($out = null, $verbose = false, $colors = self::COLOR_DEFAULT, $debug = false, $numberOfColumns = 80)
@@ -298,6 +300,7 @@ protected function printIncompletes(PHPUnit_Framework_TestResult $result)
 
     /**
      * @param PHPUnit_Framework_TestResult $result
+     *
      * @since  Method available since Release 4.0.0
      */
     protected function printRisky(PHPUnit_Framework_TestResult $result)
@@ -307,6 +310,7 @@ protected function printRisky(PHPUnit_Framework_TestResult $result)
 
     /**
      * @param PHPUnit_Framework_TestResult $result
+     *
      * @since  Method available since Release 3.0.0
      */
     protected function printSkipped(PHPUnit_Framework_TestResult $result)
@@ -425,6 +429,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -439,6 +444,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -451,6 +457,7 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time
      * A testsuite started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -466,6 +473,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
      * A testsuite ended.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -550,9 +558,11 @@ protected function writeNewLine()
      * Formats a buffer with a specified ANSI color sequence if colors are
      * enabled.
      *
-     * @param  string $color
-     * @param  string $buffer
+     * @param string $color
+     * @param string $buffer
+     *
      * @return string
+     *
      * @since  Method available since Release 4.0.0
      */
     protected function formatWithColor($color, $buffer)
@@ -587,6 +597,7 @@ protected function formatWithColor($color, $buffer)
      * @param string $color
      * @param string $buffer
      * @param bool   $lf
+     *
      * @since  Method available since Release 4.0.0
      */
     protected function writeWithColor($color, $buffer, $lf = true)
@@ -603,6 +614,7 @@ protected function writeWithColor($color, $buffer, $lf = true)
      *
      * @param string $color
      * @param string $buffer
+     *
      * @since  Method available since Release 4.0.0
      */
     protected function writeProgressWithColor($color, $buffer)
@@ -616,6 +628,7 @@ protected function writeProgressWithColor($color, $buffer)
      * @param string $name
      * @param string $color
      * @param bool   $always
+     *
      * @since  Method available since Release 4.6.5
      */
     private function writeCountString($count, $name, $color, $always = false)
diff --git a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
index 94909d9..7164861 100644
--- a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
+++ b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
@@ -55,6 +55,7 @@ class PHPUnit_TextUI_TestRunner extends PHPUnit_Runner_BaseTestRunner
     /**
      * @param PHPUnit_Runner_TestSuiteLoader $loader
      * @param PHP_CodeCoverage_Filter        $filter
+     *
      * @since Method available since Release 3.4.0
      */
     public function __construct(PHPUnit_Runner_TestSuiteLoader $loader = null, PHP_CodeCoverage_Filter $filter = null)
@@ -69,9 +70,11 @@ public function __construct(PHPUnit_Runner_TestSuiteLoader $loader = null, PHP_C
     }
 
     /**
-     * @param  PHPUnit_Framework_Test|ReflectionClass $test
-     * @param  array                                  $arguments
+     * @param PHPUnit_Framework_Test|ReflectionClass $test
+     * @param array                                  $arguments
+     *
      * @return PHPUnit_Framework_TestResult
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public static function run($test, array $arguments = array())
@@ -136,8 +139,9 @@ private function processSuiteFilters(PHPUnit_Framework_TestSuite $suite, array $
     }
 
     /**
-     * @param  PHPUnit_Framework_Test       $suite
-     * @param  array                        $arguments
+     * @param PHPUnit_Framework_Test $suite
+     * @param array                  $arguments
+     *
      * @return PHPUnit_Framework_TestResult
      */
     public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array())
@@ -448,11 +452,17 @@ class_exists($arguments['printer'], false)) {
                     "\nGenerating code coverage report in Clover XML format ..."
                 );
 
-                $writer = new PHP_CodeCoverage_Report_Clover;
-                $writer->process($codeCoverage, $arguments['coverageClover']);
+                try {
+                    $writer = new PHP_CodeCoverage_Report_Clover;
+                    $writer->process($codeCoverage, $arguments['coverageClover']);
 
-                $this->printer->write(" done\n");
-                unset($writer);
+                    $this->printer->write(" done\n");
+                    unset($writer);
+                } catch (PHP_CodeCoverage_Exception $e) {
+                    $this->printer->write(
+                        " failed\n" . $e->getMessage() . "\n"
+                    );
+                }
             }
 
             if (isset($arguments['coverageCrap4J'])) {
@@ -460,11 +470,17 @@ class_exists($arguments['printer'], false)) {
                     "\nGenerating Crap4J report XML file ..."
                 );
 
-                $writer = new PHP_CodeCoverage_Report_Crap4j($arguments['crap4jThreshold']);
-                $writer->process($codeCoverage, $arguments['coverageCrap4J']);
+                try {
+                    $writer = new PHP_CodeCoverage_Report_Crap4j($arguments['crap4jThreshold']);
+                    $writer->process($codeCoverage, $arguments['coverageCrap4J']);
 
-                $this->printer->write(" done\n");
-                unset($writer);
+                    $this->printer->write(" done\n");
+                    unset($writer);
+                } catch (PHP_CodeCoverage_Exception $e) {
+                    $this->printer->write(
+                        " failed\n" . $e->getMessage() . "\n"
+                    );
+                }
             }
 
             if (isset($arguments['coverageHtml'])) {
@@ -472,19 +488,25 @@ class_exists($arguments['printer'], false)) {
                     "\nGenerating code coverage report in HTML format ..."
                 );
 
-                $writer = new PHP_CodeCoverage_Report_HTML(
-                    $arguments['reportLowUpperBound'],
-                    $arguments['reportHighLowerBound'],
-                    sprintf(
-                        ' and <a href="http://phpunit.de/">PHPUnit %s</a>',
-                        PHPUnit_Runner_Version::id()
-                    )
-                );
+                try {
+                    $writer = new PHP_CodeCoverage_Report_HTML(
+                        $arguments['reportLowUpperBound'],
+                        $arguments['reportHighLowerBound'],
+                        sprintf(
+                            ' and <a href="https://phpunit.de/">PHPUnit %s</a>',
+                            PHPUnit_Runner_Version::id()
+                        )
+                    );
 
-                $writer->process($codeCoverage, $arguments['coverageHtml']);
+                    $writer->process($codeCoverage, $arguments['coverageHtml']);
 
-                $this->printer->write(" done\n");
-                unset($writer);
+                    $this->printer->write(" done\n");
+                    unset($writer);
+                } catch (PHP_CodeCoverage_Exception $e) {
+                    $this->printer->write(
+                        " failed\n" . $e->getMessage() . "\n"
+                    );
+                }
             }
 
             if (isset($arguments['coveragePHP'])) {
@@ -492,17 +514,23 @@ class_exists($arguments['printer'], false)) {
                     "\nGenerating code coverage report in PHP format ..."
                 );
 
-                $writer = new PHP_CodeCoverage_Report_PHP;
-                $writer->process($codeCoverage, $arguments['coveragePHP']);
+                try {
+                    $writer = new PHP_CodeCoverage_Report_PHP;
+                    $writer->process($codeCoverage, $arguments['coveragePHP']);
 
-                $this->printer->write(" done\n");
-                unset($writer);
+                    $this->printer->write(" done\n");
+                    unset($writer);
+                } catch (PHP_CodeCoverage_Exception $e) {
+                    $this->printer->write(
+                        " failed\n" . $e->getMessage() . "\n"
+                    );
+                }
             }
 
             if (isset($arguments['coverageText'])) {
                 if ($arguments['coverageText'] == 'php://stdout') {
                     $outputStream = $this->printer;
-                    $colors       = $arguments['colors'];
+                    $colors       = $arguments['colors'] && $arguments['colors'] != PHPUnit_TextUI_ResultPrinter::COLOR_NEVER;
                 } else {
                     $outputStream = new PHPUnit_Util_Printer($arguments['coverageText']);
                     $colors       = false;
@@ -525,11 +553,17 @@ class_exists($arguments['printer'], false)) {
                     "\nGenerating code coverage report in PHPUnit XML format ..."
                 );
 
-                $writer = new PHP_CodeCoverage_Report_XML;
-                $writer->process($codeCoverage, $arguments['coverageXml']);
+                try {
+                    $writer = new PHP_CodeCoverage_Report_XML;
+                    $writer->process($codeCoverage, $arguments['coverageXml']);
 
-                $this->printer->write(" done\n");
-                unset($writer);
+                    $this->printer->write(" done\n");
+                    unset($writer);
+                } catch (PHP_CodeCoverage_Exception $e) {
+                    $this->printer->write(
+                        " failed\n" . $e->getMessage() . "\n"
+                    );
+                }
             }
         }
 
@@ -558,6 +592,7 @@ protected function runFailed($message)
 
     /**
      * @param string $buffer
+     *
      * @since  Method available since Release 3.1.0
      */
     protected function write($buffer)
@@ -577,6 +612,7 @@ protected function write($buffer)
      * Returns the loader to be used.
      *
      * @return PHPUnit_Runner_TestSuiteLoader
+     *
      * @since  Method available since Release 2.2.0
      */
     public function getLoader()
@@ -590,6 +626,7 @@ public function getLoader()
 
     /**
      * @param array $arguments
+     *
      * @since  Method available since Release 3.2.1
      */
     protected function handleConfiguration(array &$arguments)
@@ -984,6 +1021,7 @@ protected function handleConfiguration(array &$arguments)
     /**
      * @param $extension
      * @param string $message
+     *
      * @since Method available since Release 4.7.3
      */
     private function showExtensionNotLoadedWarning($extension, $message = '')
diff --git a/vendor/phpunit/phpunit/src/Util/Blacklist.php b/vendor/phpunit/phpunit/src/Util/Blacklist.php
index 35a053e..a4839ee 100644
--- a/vendor/phpunit/phpunit/src/Util/Blacklist.php
+++ b/vendor/phpunit/phpunit/src/Util/Blacklist.php
@@ -50,6 +50,7 @@ class PHPUnit_Util_Blacklist
 
     /**
      * @return array
+     *
      * @since  Method available since Release 4.1.0
      */
     public function getBlacklistedDirectories()
@@ -60,7 +61,8 @@ public function getBlacklistedDirectories()
     }
 
     /**
-     * @param  string $file
+     * @param string $file
+     *
      * @return bool
      */
     public function isBlacklisted($file)
diff --git a/vendor/phpunit/phpunit/src/Util/Configuration.php b/vendor/phpunit/phpunit/src/Util/Configuration.php
index eab3b65..8e4777d 100644
--- a/vendor/phpunit/phpunit/src/Util/Configuration.php
+++ b/vendor/phpunit/phpunit/src/Util/Configuration.php
@@ -169,8 +169,10 @@ protected function __construct($filename)
     /**
      * Returns a PHPUnit configuration object.
      *
-     * @param  string                     $filename
+     * @param string $filename
+     *
      * @return PHPUnit_Util_Configuration
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getInstance($filename)
@@ -197,6 +199,7 @@ public static function getInstance($filename)
      * Returns the realpath to the configuration file.
      *
      * @return string
+     *
      * @since  Method available since Release 3.6.0
      */
     public function getFilename()
@@ -208,6 +211,7 @@ public function getFilename()
      * Returns the configuration for SUT filtering.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.1
      */
     public function getFilterConfiguration()
@@ -283,6 +287,7 @@ public function getFilterConfiguration()
      * Returns the configuration for groups.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.1
      */
     public function getGroupConfiguration()
@@ -307,6 +312,7 @@ public function getGroupConfiguration()
      * Returns the configuration for listeners.
      *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     public function getListenerConfiguration()
@@ -422,6 +428,7 @@ public function getLoggingConfiguration()
      * Returns the PHP configuration.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.1
      */
     public function getPHPConfiguration()
@@ -540,6 +547,7 @@ public function handlePHPConfiguration()
      * Returns the PHPUnit configuration.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.14
      */
     public function getPHPUnitConfiguration()
@@ -796,6 +804,7 @@ public function getPHPUnitConfiguration()
      * Returns the SeleniumTestCase browser configuration.
      *
      * @return array
+     *
      * @since  Method available since Release 3.2.9
      */
     public function getSeleniumBrowserConfiguration()
@@ -846,6 +855,7 @@ public function getSeleniumBrowserConfiguration()
      * Returns the test suite configuration.
      *
      * @return PHPUnit_Framework_TestSuite
+     *
      * @since  Method available since Release 3.2.1
      */
     public function getTestSuiteConfiguration($testSuiteFilter = null)
@@ -874,8 +884,10 @@ public function getTestSuiteConfiguration($testSuiteFilter = null)
     }
 
     /**
-     * @param  DOMElement                  $testSuiteNode
+     * @param DOMElement $testSuiteNode
+     *
      * @return PHPUnit_Framework_TestSuite
+     *
      * @since  Method available since Release 3.4.0
      */
     protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = null)
@@ -992,9 +1004,11 @@ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = nu
     }
 
     /**
-     * @param  string $value
-     * @param  bool   $default
+     * @param string $value
+     * @param bool   $default
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.2.3
      */
     protected function getBoolean($value, $default)
@@ -1009,9 +1023,11 @@ protected function getBoolean($value, $default)
     }
 
     /**
-     * @param  string $value
-     * @param  bool   $default
+     * @param string $value
+     * @param bool   $default
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.6.0
      */
     protected function getInteger($value, $default)
@@ -1024,8 +1040,10 @@ protected function getInteger($value, $default)
     }
 
     /**
-     * @param  string $query
+     * @param string $query
+     *
      * @return array
+     *
      * @since  Method available since Release 3.2.3
      */
     protected function readFilterDirectories($query)
@@ -1069,8 +1087,10 @@ protected function readFilterDirectories($query)
     }
 
     /**
-     * @param  string $query
+     * @param string $query
+     *
      * @return array
+     *
      * @since  Method available since Release 3.2.3
      */
     protected function readFilterFiles($query)
@@ -1088,9 +1108,11 @@ protected function readFilterFiles($query)
     }
 
     /**
-     * @param  string $path
-     * @param  bool   $useIncludePath
+     * @param string $path
+     * @param bool   $useIncludePath
+     *
      * @return string
+     *
      * @since  Method available since Release 3.5.0
      */
     protected function toAbsolutePath($path, $useIncludePath = false)
diff --git a/vendor/phpunit/phpunit/src/Util/ErrorHandler.php b/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
index 59f274d..d75d1be 100644
--- a/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
+++ b/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
@@ -36,10 +36,11 @@ public static function getErrorStack()
     }
 
     /**
-     * @param  int                     $errno
-     * @param  string                  $errstr
-     * @param  string                  $errfile
-     * @param  int                     $errline
+     * @param int    $errno
+     * @param string $errstr
+     * @param string $errfile
+     * @param int    $errline
+     *
      * @throws PHPUnit_Framework_Error
      */
     public static function handleError($errno, $errstr, $errfile, $errline)
@@ -87,7 +88,9 @@ public static function handleError($errno, $errstr, $errfile, $errline)
     /**
      * Registers an error handler and returns a function that will restore
      * the previous handler when invoked
-     * @param  int       $severity PHP predefined error constant
+     *
+     * @param int $severity PHP predefined error constant
+     *
      * @throws Exception if event of specified severity is emitted
      */
     public static function handleErrorOnce($severity = E_WARNING)
diff --git a/vendor/phpunit/phpunit/src/Util/Fileloader.php b/vendor/phpunit/phpunit/src/Util/Fileloader.php
index adabc9c..7fc787f 100644
--- a/vendor/phpunit/phpunit/src/Util/Fileloader.php
+++ b/vendor/phpunit/phpunit/src/Util/Fileloader.php
@@ -19,8 +19,10 @@ class PHPUnit_Util_Fileloader
      * Checks if a PHP sourcefile is readable.
      * The sourcefile is loaded through the load() method.
      *
-     * @param  string                      $filename
+     * @param string $filename
+     *
      * @return string
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public static function checkAndLoad($filename)
@@ -41,8 +43,10 @@ public static function checkAndLoad($filename)
     /**
      * Loads a PHP sourcefile.
      *
-     * @param  string $filename
+     * @param string $filename
+     *
      * @return mixed
+     *
      * @since  Method available since Release 3.0.0
      */
     public static function load($filename)
diff --git a/vendor/phpunit/phpunit/src/Util/Filesystem.php b/vendor/phpunit/phpunit/src/Util/Filesystem.php
index 3caa5e9..aca601a 100644
--- a/vendor/phpunit/phpunit/src/Util/Filesystem.php
+++ b/vendor/phpunit/phpunit/src/Util/Filesystem.php
@@ -25,8 +25,10 @@ class PHPUnit_Util_Filesystem
      *   - PEAR CS:   Foo_Bar_Baz -> Foo/Bar/Baz.php
      *   - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php
      *
-     * @param  string $className
+     * @param string $className
+     *
      * @return string
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function classNameToFilename($className)
diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php
index faf7a5b..8e81b59 100644
--- a/vendor/phpunit/phpunit/src/Util/Filter.php
+++ b/vendor/phpunit/phpunit/src/Util/Filter.php
@@ -18,8 +18,9 @@ class PHPUnit_Util_Filter
     /**
      * Filters stack frames from PHPUnit classes.
      *
-     * @param  Exception $e
-     * @param  bool      $asString
+     * @param Exception $e
+     * @param bool      $asString
+     *
      * @return string
      */
     public static function getFilteredStacktrace(Exception $e, $asString = true)
@@ -84,10 +85,12 @@ public static function getFilteredStacktrace(Exception $e, $asString = true)
     }
 
     /**
-     * @param  array  $trace
-     * @param  string $file
-     * @param  int    $line
+     * @param array  $trace
+     * @param string $file
+     * @param int    $line
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.3.2
      */
     private static function frameExists(array $trace, $file, $line)
diff --git a/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php b/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php
index 0a675fd..80410a8 100644
--- a/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php
+++ b/vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php
@@ -17,9 +17,10 @@
 class PHPUnit_Util_InvalidArgumentHelper
 {
     /**
-     * @param  int                         $argument
-     * @param  string                      $type
-     * @param  mixed                       $value
+     * @param int    $argument
+     * @param string $type
+     * @param mixed  $value
+     *
      * @return PHPUnit_Framework_Exception
      */
     public static function factory($argument, $type, $value = null)
diff --git a/vendor/phpunit/phpunit/src/Util/Log/JSON.php b/vendor/phpunit/phpunit/src/Util/Log/JSON.php
index 67f66a8..776bad9 100644
--- a/vendor/phpunit/phpunit/src/Util/Log/JSON.php
+++ b/vendor/phpunit/phpunit/src/Util/Log/JSON.php
@@ -96,6 +96,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
diff --git a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
index 745be7d..a2e37e5 100644
--- a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
+++ b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
@@ -43,27 +43,27 @@ class PHPUnit_Util_Log_JUnit extends PHPUnit_Util_Printer implements PHPUnit_Fra
     protected $testSuites = array();
 
     /**
-     * @var integer[]
+     * @var int[]
      */
     protected $testSuiteTests = array(0);
 
     /**
-     * @var integer[]
+     * @var int[]
      */
     protected $testSuiteAssertions = array(0);
 
     /**
-     * @var integer[]
+     * @var int[]
      */
     protected $testSuiteErrors = array(0);
 
     /**
-     * @var integer[]
+     * @var int[]
      */
     protected $testSuiteFailures = array(0);
 
     /**
-     * @var integer[]
+     * @var int[]
      */
     protected $testSuiteTimes = array(0);
 
@@ -217,6 +217,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -246,6 +247,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -273,6 +275,7 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time
      * A testsuite started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -308,6 +311,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
      * A testsuite ended.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -422,6 +426,7 @@ public function endTest(PHPUnit_Framework_Test $test, $time)
      * Returns the XML as a string.
      *
      * @return string
+     *
      * @since  Method available since Release 2.2.0
      */
     public function getXML()
@@ -437,6 +442,7 @@ public function getXML()
      * PHPUnit with Phing.
      *
      * @return string
+     *
      * @since  Method available since Release 2.2.0
      */
     public function setWriteDocument($flag)
diff --git a/vendor/phpunit/phpunit/src/Util/Log/TAP.php b/vendor/phpunit/phpunit/src/Util/Log/TAP.php
index 2067bec..bcd587f 100644
--- a/vendor/phpunit/phpunit/src/Util/Log/TAP.php
+++ b/vendor/phpunit/phpunit/src/Util/Log/TAP.php
@@ -34,8 +34,10 @@ class PHPUnit_Util_Log_TAP extends PHPUnit_Util_Printer implements PHPUnit_Frame
     /**
      * Constructor.
      *
-     * @param  mixed                       $out
+     * @param mixed $out
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.3.4
      */
     public function __construct($out = null)
@@ -116,6 +118,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -137,6 +140,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
diff --git a/vendor/phpunit/phpunit/src/Util/PHP.php b/vendor/phpunit/phpunit/src/Util/PHP.php
index 0439b3e..84c2ead 100644
--- a/vendor/phpunit/phpunit/src/Util/PHP.php
+++ b/vendor/phpunit/phpunit/src/Util/PHP.php
@@ -17,6 +17,7 @@
 {
     /**
      * @return PHPUnit_Util_PHP
+     *
      * @since  Method available since Release 3.5.12
      */
     public static function factory()
@@ -31,9 +32,10 @@ public static function factory()
     /**
      * Runs a single test in a separate PHP process.
      *
-     * @param  string                       $job
-     * @param  PHPUnit_Framework_Test       $test
-     * @param  PHPUnit_Framework_TestResult $result
+     * @param string                       $job
+     * @param PHPUnit_Framework_Test       $test
+     * @param PHPUnit_Framework_TestResult $result
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function runTestJob($job, PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result)
@@ -53,16 +55,20 @@ public function runTestJob($job, PHPUnit_Framework_Test $test, PHPUnit_Framework
     /**
      * Runs a single job (PHP code) using a separate PHP process.
      *
-     * @param  string                      $job
-     * @param  array                       $settings
+     * @param string $job
+     * @param array  $settings
+     *
      * @return array
+     *
      * @throws PHPUnit_Framework_Exception
      */
     abstract public function runJob($job, array $settings = array());
 
     /**
-     * @param  array  $settings
+     * @param array $settings
+     *
      * @return string
+     *
      * @since Method available since Release 4.0.0
      */
     protected function settingsToParameters(array $settings)
@@ -83,6 +89,7 @@ protected function settingsToParameters(array $settings)
      * @param PHPUnit_Framework_TestResult $result
      * @param string                       $stdout
      * @param string                       $stderr
+     *
      * @since Method available since Release 3.5.0
      */
     private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result, $stdout, $stderr)
@@ -184,8 +191,10 @@ private function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framew
     /**
      * Gets the thrown exception from a PHPUnit_Framework_TestFailure.
      *
-     * @param  PHPUnit_Framework_TestFailure $error
+     * @param PHPUnit_Framework_TestFailure $error
+     *
      * @return Exception
+     *
      * @since  Method available since Release 3.6.0
      * @see    https://github.com/sebastianbergmann/phpunit/issues/74
      */
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Default.php b/vendor/phpunit/phpunit/src/Util/PHP/Default.php
index b8da4c8..f8b5714 100644
--- a/vendor/phpunit/phpunit/src/Util/PHP/Default.php
+++ b/vendor/phpunit/phpunit/src/Util/PHP/Default.php
@@ -20,9 +20,11 @@ class PHPUnit_Util_PHP_Default extends PHPUnit_Util_PHP
     /**
      * Runs a single job (PHP code) using a separate PHP process.
      *
-     * @param  string                      $job
-     * @param  array                       $settings
+     * @param string $job
+     * @param array  $settings
+     *
      * @return array
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function runJob($job, array $settings = array())
@@ -61,9 +63,11 @@ public function runJob($job, array $settings = array())
     }
 
     /**
-     * @param  resource                    $pipe
-     * @param  string                      $job
+     * @param resource $pipe
+     * @param string   $job
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since Method available since Release 3.5.12
      */
     protected function process($pipe, $job)
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Windows.php b/vendor/phpunit/phpunit/src/Util/PHP/Windows.php
index 3b1f34a..6587aae 100644
--- a/vendor/phpunit/phpunit/src/Util/PHP/Windows.php
+++ b/vendor/phpunit/phpunit/src/Util/PHP/Windows.php
@@ -74,9 +74,11 @@ public function runJob($job, array $settings = array())
     }
 
     /**
-     * @param  resource                    $pipe
-     * @param  string                      $job
+     * @param resource $pipe
+     * @param string   $job
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.5.12
      */
     protected function process($pipe, $job)
diff --git a/vendor/phpunit/phpunit/src/Util/Printer.php b/vendor/phpunit/phpunit/src/Util/Printer.php
index 5db309e..9ff7daa 100644
--- a/vendor/phpunit/phpunit/src/Util/Printer.php
+++ b/vendor/phpunit/phpunit/src/Util/Printer.php
@@ -40,7 +40,8 @@ class PHPUnit_Util_Printer
     /**
      * Constructor.
      *
-     * @param  mixed                       $out
+     * @param mixed $out
+     *
      * @throws PHPUnit_Framework_Exception
      */
     public function __construct($out = null)
@@ -142,6 +143,7 @@ public function write($buffer)
      * Check auto-flush mode.
      *
      * @return bool
+     *
      * @since  Method available since Release 3.3.0
      */
     public function getAutoFlush()
@@ -156,6 +158,7 @@ public function getAutoFlush()
      * not be confused with the different effects of this class' flush() method.
      *
      * @param bool $autoFlush
+     *
      * @since  Method available since Release 3.3.0
      */
     public function setAutoFlush($autoFlush)
diff --git a/vendor/phpunit/phpunit/src/Util/String.php b/vendor/phpunit/phpunit/src/Util/String.php
index ed952ab..18f8593 100644
--- a/vendor/phpunit/phpunit/src/Util/String.php
+++ b/vendor/phpunit/phpunit/src/Util/String.php
@@ -18,7 +18,8 @@ class PHPUnit_Util_String
     /**
      * Converts a string to UTF-8 encoding.
      *
-     * @param  string $string
+     * @param string $string
+     *
      * @return string
      */
     public static function convertToUtf8($string)
@@ -37,7 +38,8 @@ public static function convertToUtf8($string)
     /**
      * Checks a string for UTF-8 encoding.
      *
-     * @param  string $string
+     * @param string $string
+     *
      * @return bool
      */
     protected static function isUtf8($string)
diff --git a/vendor/phpunit/phpunit/src/Util/Test.php b/vendor/phpunit/phpunit/src/Util/Test.php
index 583bab9..cef33b3 100644
--- a/vendor/phpunit/phpunit/src/Util/Test.php
+++ b/vendor/phpunit/phpunit/src/Util/Test.php
@@ -39,8 +39,9 @@ class PHPUnit_Util_Test
     private static $hookMethods = array();
 
     /**
-     * @param  PHPUnit_Framework_Test $test
-     * @param  bool                   $asString
+     * @param PHPUnit_Framework_Test $test
+     * @param bool                   $asString
+     *
      * @return mixed
      */
     public static function describe(PHPUnit_Framework_Test $test, $asString = true)
@@ -65,10 +66,13 @@ public static function describe(PHPUnit_Framework_Test $test, $asString = true)
     }
 
     /**
-     * @param  string                                  $className
-     * @param  string                                  $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array|bool
+     *
      * @throws PHPUnit_Framework_CodeCoverageException
+     *
      * @since  Method available since Release 4.0.0
      */
     public static function getLinesToBeCovered($className, $methodName)
@@ -88,9 +92,11 @@ public static function getLinesToBeCovered($className, $methodName)
     /**
      * Returns lines of code specified with the @uses annotation.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 4.0.0
      */
     public static function getLinesToBeUsed($className, $methodName)
@@ -99,11 +105,14 @@ public static function getLinesToBeUsed($className, $methodName)
     }
 
     /**
-     * @param  string                                  $className
-     * @param  string                                  $methodName
-     * @param  string                                  $mode
+     * @param string $className
+     * @param string $methodName
+     * @param string $mode
+     *
      * @return array
+     *
      * @throws PHPUnit_Framework_CodeCoverageException
+     *
      * @since  Method available since Release 4.2.0
      */
     private static function getLinesToBeCoveredOrUsed($className, $methodName, $mode)
@@ -162,9 +171,11 @@ private static function getLinesToBeCoveredOrUsed($className, $methodName, $mode
     /**
      * Returns the requirements for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.6.0
      */
     public static function getRequirements($className, $methodName)
@@ -206,9 +217,11 @@ public static function getRequirements($className, $methodName)
     /**
      * Returns the missing requirements for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 4.3.0
      */
     public static function getMissingRequirements($className, $methodName)
@@ -258,9 +271,11 @@ public static function getMissingRequirements($className, $methodName)
     /**
      * Returns the expected exception for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.3.6
      */
     public static function getExpectedException($className, $methodName)
@@ -323,7 +338,8 @@ public static function getExpectedException($className, $methodName)
      *
      * If the constant is not found the string is used as is to ensure maximum BC.
      *
-     * @param  string $message
+     * @param string $message
+     *
      * @return string
      */
     private static function parseAnnotationContent($message)
@@ -340,11 +356,14 @@ private static function parseAnnotationContent($message)
     /**
      * Returns the provided data for a method.
      *
-     * @param  string                      $className
-     * @param  string                      $methodName
-     * @return array|Iterator              when a data provider is specified and exists
-     *                                                null           when no data provider is specified
+     * @param string $className
+     * @param string $methodName
+     *
+     * @return array|Iterator when a data provider is specified and exists
+     *                        null           when no data provider is specified
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.2.0
      */
     public static function getProvidedData($className, $methodName)
@@ -384,11 +403,13 @@ public static function getProvidedData($className, $methodName)
     /**
      * Returns the provided data for a method.
      *
-     * @param  string                      $docComment
-     * @param  string                      $className
-     * @param  string                      $methodName
-     * @return array|Iterator              when a data provider is specified and exists
-     *                                                null           when no data provider is specified
+     * @param string $docComment
+     * @param string $className
+     * @param string $methodName
+     *
+     * @return array|Iterator when a data provider is specified and exists
+     *                        null           when no data provider is specified
+     *
      * @throws PHPUnit_Framework_Exception
      */
     private static function getDataFromDataProviderAnnotation($docComment, $className, $methodName)
@@ -432,9 +453,11 @@ private static function getDataFromDataProviderAnnotation($docComment, $classNam
     }
 
     /**
-     * @param  string                      $docComment full docComment string
-     * @return array                       when @testWith annotation is defined
-     *                                                null  when @testWith annotation is omitted
+     * @param string $docComment full docComment string
+     *
+     * @return array when @testWith annotation is defined
+     *               null  when @testWith annotation is omitted
+     *
      * @throws PHPUnit_Framework_Exception when @testWith annotation is defined but cannot be parsed
      */
     public static function getDataFromTestWithAnnotation($docComment)
@@ -472,10 +495,13 @@ private static function cleanUpMultiLineAnnotation($docComment)
     }
 
     /**
-     * @param  string              $className
-     * @param  string              $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @throws ReflectionException
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function parseTestMethodAnnotations($className, $methodName = '')
@@ -502,8 +528,10 @@ public static function parseTestMethodAnnotations($className, $methodName = '')
     }
 
     /**
-     * @param  string $docblock
+     * @param string $docblock
+     *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     private static function parseAnnotations($docblock)
@@ -526,9 +554,11 @@ private static function parseAnnotations($docblock)
     /**
      * Returns the backup settings for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getBackupSettings($className, $methodName)
@@ -550,9 +580,11 @@ public static function getBackupSettings($className, $methodName)
     /**
      * Returns the dependencies for a test class or method.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getDependencies($className, $methodName)
@@ -581,9 +613,11 @@ public static function getDependencies($className, $methodName)
     /**
      * Returns the error handler settings for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getErrorHandlerSettings($className, $methodName)
@@ -598,9 +632,11 @@ public static function getErrorHandlerSettings($className, $methodName)
     /**
      * Returns the groups for a test class or method.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.2.0
      */
     public static function getGroups($className, $methodName = '')
@@ -654,9 +690,11 @@ public static function getGroups($className, $methodName = '')
     /**
      * Returns the size of the test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return int
+     *
      * @since  Method available since Release 3.6.0
      */
     public static function getSize($className, $methodName)
@@ -683,9 +721,11 @@ public static function getSize($className, $methodName)
     /**
      * Returns the tickets for a test class or method.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return array
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getTickets($className, $methodName)
@@ -711,9 +751,11 @@ public static function getTickets($className, $methodName)
     /**
      * Returns the process isolation settings for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.4.1
      */
     public static function getProcessIsolationSettings($className, $methodName)
@@ -734,9 +776,11 @@ public static function getProcessIsolationSettings($className, $methodName)
     /**
      * Returns the preserve global state settings for a test.
      *
-     * @param  string $className
-     * @param  string $methodName
+     * @param string $className
+     * @param string $methodName
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function getPreserveGlobalStateSettings($className, $methodName)
@@ -749,8 +793,10 @@ public static function getPreserveGlobalStateSettings($className, $methodName)
     }
 
     /**
-     * @param  string $className
+     * @param string $className
+     *
      * @return array
+     *
      * @since  Method available since Release 4.0.8
      */
     public static function getHookMethods($className)
@@ -791,6 +837,7 @@ public static function getHookMethods($className)
 
     /**
      * @return array
+     *
      * @since  Method available since Release 4.0.9
      */
     private static function emptyHookMethodsArray()
@@ -804,10 +851,12 @@ private static function emptyHookMethodsArray()
     }
 
     /**
-     * @param  string $className
-     * @param  string $methodName
-     * @param  string $settingName
+     * @param string $className
+     * @param string $methodName
+     * @param string $settingName
+     *
      * @return bool
+     *
      * @since  Method available since Release 3.4.0
      */
     private static function getBooleanAnnotationSetting($className, $methodName, $settingName)
@@ -839,9 +888,12 @@ private static function getBooleanAnnotationSetting($className, $methodName, $se
     }
 
     /**
-     * @param  string                                         $element
+     * @param string $element
+     *
      * @return array
+     *
      * @throws PHPUnit_Framework_InvalidCoversTargetException
+     *
      * @since  Method available since Release 4.0.0
      */
     private static function resolveElementToReflectionObjects($element)
@@ -850,7 +902,7 @@ private static function resolveElementToReflectionObjects($element)
 
         if (strpos($element, '\\') !== false && function_exists($element)) {
             $codeToCoverList[] = new ReflectionFunction($element);
-        } else if (strpos($element, '::') !== false) {
+        } elseif (strpos($element, '::') !== false) {
             list($className, $methodName) = explode('::', $element);
 
             if (isset($methodName[0]) && $methodName[0] == '<') {
@@ -956,7 +1008,8 @@ class_parents($element)
     }
 
     /**
-     * @param  array $reflectors
+     * @param array $reflectors
+     *
      * @return array
      */
     private static function resolveReflectionObjectsToLines(array $reflectors)
@@ -982,8 +1035,10 @@ private static function resolveReflectionObjectsToLines(array $reflectors)
     }
 
     /**
-     * @param  ReflectionMethod $method
+     * @param ReflectionMethod $method
+     *
      * @return bool
+     *
      * @since  Method available since Release 4.0.8
      */
     private static function isBeforeClassMethod(ReflectionMethod $method)
@@ -992,8 +1047,10 @@ private static function isBeforeClassMethod(ReflectionMethod $method)
     }
 
     /**
-     * @param  ReflectionMethod $method
+     * @param ReflectionMethod $method
+     *
      * @return bool
+     *
      * @since  Method available since Release 4.0.8
      */
     private static function isBeforeMethod(ReflectionMethod $method)
@@ -1002,8 +1059,10 @@ private static function isBeforeMethod(ReflectionMethod $method)
     }
 
     /**
-     * @param  ReflectionMethod $method
+     * @param ReflectionMethod $method
+     *
      * @return bool
+     *
      * @since  Method available since Release 4.0.8
      */
     private static function isAfterClassMethod(ReflectionMethod $method)
@@ -1012,8 +1071,10 @@ private static function isAfterClassMethod(ReflectionMethod $method)
     }
 
     /**
-     * @param  ReflectionMethod $method
+     * @param ReflectionMethod $method
+     *
      * @return bool
+     *
      * @since  Method available since Release 4.0.8
      */
     private static function isAfterMethod(ReflectionMethod $method)
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
index 45fa898..55a972f 100644
--- a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
@@ -33,7 +33,8 @@ class PHPUnit_Util_TestDox_NamePrettifier
     /**
      * Prettifies the name of a test class.
      *
-     * @param  string $name
+     * @param string $name
+     *
      * @return string
      */
     public function prettifyTestClass($name)
@@ -60,7 +61,8 @@ public function prettifyTestClass($name)
     /**
      * Prettifies the name of a test method.
      *
-     * @param  string $name
+     * @param string $name
+     *
      * @return string
      */
     public function prettifyTestMethod($name)
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
index fbd7d84..8511c2d 100644
--- a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
@@ -151,6 +151,7 @@ public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $t
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 4.0.0
      */
     public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -169,6 +170,7 @@ public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
      * @param PHPUnit_Framework_Test $test
      * @param Exception              $e
      * @param float                  $time
+     *
      * @since  Method available since Release 3.0.0
      */
     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
@@ -185,6 +187,7 @@ public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time
      * A testsuite started.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
@@ -195,6 +198,7 @@ public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
      * A testsuite ended.
      *
      * @param PHPUnit_Framework_TestSuite $suite
+     *
      * @since  Method available since Release 2.2.0
      */
     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
diff --git a/vendor/phpunit/phpunit/src/Util/XML.php b/vendor/phpunit/phpunit/src/Util/XML.php
index 552efe2..176204b 100644
--- a/vendor/phpunit/phpunit/src/Util/XML.php
+++ b/vendor/phpunit/phpunit/src/Util/XML.php
@@ -21,8 +21,10 @@ class PHPUnit_Util_XML
      * and FFFF (not even as character reference).
      * See http://www.w3.org/TR/xml/#charsets
      *
-     * @param  string $string
+     * @param string $string
+     *
      * @return string
+     *
      * @since  Method available since Release 3.4.6
      */
     public static function prepareString($string)
@@ -41,11 +43,13 @@ public static function prepareString($string)
     /**
      * Loads an XML (or HTML) file into a DOMDocument object.
      *
-     * @param  string      $filename
-     * @param  bool        $isHtml
-     * @param  bool        $xinclude
-     * @param  bool        $strict
+     * @param string $filename
+     * @param bool   $isHtml
+     * @param bool   $xinclude
+     * @param bool   $strict
+     *
      * @return DOMDocument
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function loadFile($filename, $isHtml = false, $xinclude = false, $strict = false)
@@ -80,12 +84,14 @@ public static function loadFile($filename, $isHtml = false, $xinclude = false, $
      * not a string as it currently does.  To load a file into a
      * DOMDocument, use loadFile() instead.
      *
-     * @param  string|DOMDocument $actual
-     * @param  bool               $isHtml
-     * @param  string             $filename
-     * @param  bool               $xinclude
-     * @param  bool               $strict
+     * @param string|DOMDocument $actual
+     * @param bool               $isHtml
+     * @param string             $filename
+     * @param bool               $xinclude
+     * @param bool               $strict
+     *
      * @return DOMDocument
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function load($actual, $isHtml = false, $filename = '', $xinclude = false, $strict = false)
@@ -151,8 +157,10 @@ public static function load($actual, $isHtml = false, $filename = '', $xinclude
     }
 
     /**
-     * @param  DOMNode $node
+     * @param DOMNode $node
+     *
      * @return string
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function nodeToText(DOMNode $node)
@@ -172,6 +180,7 @@ public static function nodeToText(DOMNode $node)
 
     /**
      * @param DOMNode $node
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function removeCharacterDataNodes(DOMNode $node)
@@ -188,8 +197,10 @@ public static function removeCharacterDataNodes(DOMNode $node)
     /**
      * "Convert" a DOMElement object into a PHP variable.
      *
-     * @param  DOMElement $element
+     * @param DOMElement $element
+     *
      * @return mixed
+     *
      * @since  Method available since Release 3.4.0
      */
     public static function xmlToVariable(DOMElement $element)
@@ -256,10 +267,13 @@ public static function xmlToVariable(DOMElement $element)
     /**
      * Validate list of keys in the associative array.
      *
-     * @param  array                       $hash
-     * @param  array                       $validKeys
+     * @param array $hash
+     * @param array $validKeys
+     *
      * @return array
+     *
      * @throws PHPUnit_Framework_Exception
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function assertValidKeys(array $hash, array $validKeys)
@@ -301,9 +315,11 @@ public static function assertValidKeys(array $hash, array $validKeys)
      * Parse a CSS selector into an associative array suitable for
      * use with findNodes().
      *
-     * @param  string $selector
-     * @param  mixed  $content
+     * @param string $selector
+     * @param mixed  $content
+     *
      * @return array
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function convertSelectToTag($selector, $content = true)
@@ -435,11 +451,13 @@ public static function convertSelectToTag($selector, $content = true)
      * The $actual document may be a DOMDocument or a string
      * containing XML or HTML, identified by $isHtml.
      *
-     * @param  array      $selector
-     * @param  string     $content
-     * @param  mixed      $actual
-     * @param  bool       $isHtml
+     * @param array  $selector
+     * @param string $content
+     * @param mixed  $actual
+     * @param bool   $isHtml
+     *
      * @return bool|array
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function cssSelect($selector, $content, $actual, $isHtml = true)
@@ -454,10 +472,12 @@ public static function cssSelect($selector, $content, $actual, $isHtml = true)
     /**
      * Parse out the options from the tag using DOM object tree.
      *
-     * @param  DOMDocument $dom
-     * @param  array       $options
-     * @param  bool        $isHtml
+     * @param DOMDocument $dom
+     * @param array       $options
+     * @param bool        $isHtml
+     *
      * @return array
+     *
      * @since  Method available since Release 3.3.0
      */
     public static function findNodes(DOMDocument $dom, array $options, $isHtml = true)
@@ -836,8 +856,10 @@ public static function findNodes(DOMDocument $dom, array $options, $isHtml = tru
     /**
      * Recursively get flat array of all descendants of this node.
      *
-     * @param  DOMNode $node
+     * @param DOMNode $node
+     *
      * @return array
+     *
      * @since  Method available since Release 3.3.0
      */
     protected static function getDescendants(DOMNode $node)
@@ -861,9 +883,11 @@ protected static function getDescendants(DOMNode $node)
     /**
      * Gets elements by case insensitive tagname.
      *
-     * @param  DOMDocument $dom
-     * @param  string      $tag
+     * @param DOMDocument $dom
+     * @param string      $tag
+     *
      * @return DOMNodeList
+     *
      * @since  Method available since Release 3.4.0
      */
     protected static function getElementsByCaseInsensitiveTagName(DOMDocument $dom, $tag)
@@ -880,8 +904,10 @@ protected static function getElementsByCaseInsensitiveTagName(DOMDocument $dom,
     /**
      * Get the text value of this node's child text node.
      *
-     * @param  DOMNode $node
+     * @param DOMNode $node
+     *
      * @return string
+     *
      * @since  Method available since Release 3.3.0
      */
     protected static function getNodeText(DOMNode $node)
diff --git a/vendor/sebastian/global-state/.gitignore b/vendor/sebastian/global-state/.gitignore
index a288f68..464180e 100644
--- a/vendor/sebastian/global-state/.gitignore
+++ b/vendor/sebastian/global-state/.gitignore
@@ -3,3 +3,4 @@ composer.lock
 composer.phar
 vendor/
 cache.properties
+phpunit.xml
diff --git a/vendor/sebastian/global-state/.travis.yml b/vendor/sebastian/global-state/.travis.yml
index 41edae3..0be6154 100644
--- a/vendor/sebastian/global-state/.travis.yml
+++ b/vendor/sebastian/global-state/.travis.yml
@@ -1,9 +1,5 @@
 language: php
 
-before_script:
-  - composer self-update
-  - composer install --no-interaction --prefer-source --dev
-
 php:
   - 5.3.3
   - 5.3
@@ -12,8 +8,13 @@ php:
   - 5.6
   - hhvm
 
-script: ./vendor/bin/phpunit --configuration ./build/phpunit.xml
+sudo: false
+
+before_script:
+  - composer self-update
+  - composer install --no-interaction --prefer-source --dev
+
+script: ./vendor/bin/phpunit
 
 notifications:
   email: false
-  irc: "irc.freenode.org#phpunit"
diff --git a/vendor/sebastian/global-state/LICENSE b/vendor/sebastian/global-state/LICENSE
index b6176e0..a555bcd 100644
--- a/vendor/sebastian/global-state/LICENSE
+++ b/vendor/sebastian/global-state/LICENSE
@@ -1,6 +1,6 @@
 GlobalState
 
-Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
+Copyright (c) 2001-2015, Sebastian Bergmann <sebastian@phpunit.de>.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/vendor/sebastian/global-state/README.md b/vendor/sebastian/global-state/README.md
index 78fd117..c5e262b 100644
--- a/vendor/sebastian/global-state/README.md
+++ b/vendor/sebastian/global-state/README.md
@@ -2,6 +2,8 @@
 
 Snapshotting of global state, factored out of PHPUnit into a stand-alone component.
 
+[![Build Status](https://travis-ci.org/sebastianbergmann/global-state.svg?branch=master)](https://travis-ci.org/sebastianbergmann/global-state)
+
 ## Installation
 
 To add this package as a local, per-project dependency to your project, simply add a dependency on `sebastian/global-state` to your project's `composer.json` file. Here is a minimal example of a `composer.json` file that just defines a dependency on GlobalState:
diff --git a/vendor/sebastian/global-state/build/phpunit.xml b/vendor/sebastian/global-state/phpunit.xml.dist
similarity index 60%
rename from vendor/sebastian/global-state/build/phpunit.xml
rename to vendor/sebastian/global-state/phpunit.xml.dist
index 9fef0a0..d607918 100644
--- a/vendor/sebastian/global-state/build/phpunit.xml
+++ b/vendor/sebastian/global-state/phpunit.xml.dist
@@ -1,16 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.2/phpunit.xsd"
-         bootstrap="../vendor/autoload.php"
+         bootstrap="vendor/autoload.php"
          backupGlobals="false"
          verbose="true">
   <testsuite name="GlobalState">
-    <directory suffix="Test.php">../tests</directory>
+    <directory suffix="Test.php">tests</directory>
   </testsuite>
 
   <filter>
     <whitelist processUncoveredFilesFromWhitelist="true">
-      <directory suffix=".php">../src</directory>
+      <directory suffix=".php">src</directory>
     </whitelist>
   </filter>
+
+  <php>
+    <const name="GLOBALSTATE_TESTSUITE" value="true"/>
+    <ini name="date.timezone" value="Etc/UTC"/>
+  </php>
 </phpunit>
diff --git a/vendor/sebastian/global-state/src/Blacklist.php b/vendor/sebastian/global-state/src/Blacklist.php
index 12d900f..5d54091 100644
--- a/vendor/sebastian/global-state/src/Blacklist.php
+++ b/vendor/sebastian/global-state/src/Blacklist.php
@@ -1,43 +1,11 @@
 <?php
-/**
- * GlobalState
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
+/*
+ * This file is part of the GlobalState package.
  *
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
- *   * Neither the name of Sebastian Bergmann nor the names of his
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace SebastianBergmann\GlobalState;
@@ -46,11 +14,6 @@
 
 /**
  * A blacklist for global state elements that should not be snapshotted.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
  */
 class Blacklist
 {
@@ -139,7 +102,7 @@ public function addStaticAttribute($className, $attributeName)
 
     /**
      * @param  string $variableName
-     * @return boolean
+     * @return bool
      */
     public function isGlobalVariableBlacklisted($variableName)
     {
@@ -149,7 +112,7 @@ public function isGlobalVariableBlacklisted($variableName)
     /**
      * @param  string $className
      * @param  string $attributeName
-     * @return boolean
+     * @return bool
      */
     public function isStaticAttributeBlacklisted($className, $attributeName)
     {
diff --git a/vendor/sebastian/global-state/src/CodeExporter.php b/vendor/sebastian/global-state/src/CodeExporter.php
new file mode 100644
index 0000000..d595c22
--- /dev/null
+++ b/vendor/sebastian/global-state/src/CodeExporter.php
@@ -0,0 +1,93 @@
+<?php
+/*
+ * This file is part of the GlobalState package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\GlobalState;
+
+/**
+ * Exports parts of a Snapshot as PHP code.
+ */
+class CodeExporter
+{
+    /**
+     * @param  Snapshot $snapshot
+     * @return string
+     */
+    public function constants(Snapshot $snapshot)
+    {
+        $result = '';
+
+        foreach ($snapshot->constants() as $name => $value) {
+            $result .= sprintf(
+                'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n",
+                $name,
+                $name,
+                $this->exportVariable($value)
+            );
+        }
+
+        return $result;
+    }
+
+    /**
+     * @param  Snapshot $snapshot
+     * @return string
+     */
+    public function iniSettings(Snapshot $snapshot)
+    {
+        $result = '';
+
+        foreach ($snapshot->iniSettings() as $key => $value) {
+            $result .= sprintf(
+                '@ini_set(%s, %s);' . "\n",
+                $this->exportVariable($key),
+                $this->exportVariable($value)
+            );
+        }
+
+        return $result;
+    }
+
+    /**
+     * @param  mixed  $variable
+     * @return string
+     */
+    private function exportVariable($variable)
+    {
+        if (is_scalar($variable) || is_null($variable) ||
+            (is_array($variable) && $this->arrayOnlyContainsScalars($variable))) {
+            return var_export($variable, true);
+        }
+
+        return 'unserialize(' . var_export(serialize($variable), true) . ')';
+    }
+
+    /**
+     * @param  array $array
+     * @return bool
+     */
+    private function arrayOnlyContainsScalars(array $array)
+    {
+        $result = true;
+
+        foreach ($array as $element) {
+            if (is_array($element)) {
+                $result = self::arrayOnlyContainsScalars($element);
+            } elseif (!is_scalar($element) && !is_null($element)) {
+                $result = false;
+            }
+
+            if ($result === false) {
+                break;
+            }
+        }
+
+        return $result;
+    }
+}
diff --git a/vendor/sebastian/global-state/src/Exception.php b/vendor/sebastian/global-state/src/Exception.php
index 0436886..1e00212 100644
--- a/vendor/sebastian/global-state/src/Exception.php
+++ b/vendor/sebastian/global-state/src/Exception.php
@@ -1,52 +1,16 @@
 <?php
-/**
- * GlobalState
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
- *
- *   * Neither the name of Sebastian Bergmann nor the names of his
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
+/*
+ * This file is part of the GlobalState package.
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace SebastianBergmann\GlobalState;
 
 /**
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
  */
 interface Exception
 {
diff --git a/vendor/sebastian/global-state/src/Restorer.php b/vendor/sebastian/global-state/src/Restorer.php
index a5f0e55..78e0ba8 100644
--- a/vendor/sebastian/global-state/src/Restorer.php
+++ b/vendor/sebastian/global-state/src/Restorer.php
@@ -1,43 +1,11 @@
 <?php
-/**
- * GlobalState
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
+/*
+ * This file is part of the GlobalState package.
  *
- *   * Neither the name of Sebastian Bergmann nor the names of his
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace SebastianBergmann\GlobalState;
@@ -46,18 +14,13 @@
 
 /**
  * Restorer of snapshots of global state.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
  */
 class Restorer
 {
     /**
      * Deletes function definitions that are not defined in a snapshot.
      *
-     * @param  Snapshot $snapshot
+     * @param  Snapshot         $snapshot
      * @throws RuntimeException when the uopz_delete() function is not available
      * @see    https://github.com/krakjoe/uopz
      */
@@ -109,6 +72,10 @@ public function restoreGlobalVariables(Snapshot $snapshot)
      */
     public function restoreStaticAttributes(Snapshot $snapshot)
     {
+        $current    = new Snapshot($snapshot->blacklist(), false, false, false, false, true, false, false, false, false);
+        $newClasses = array_diff($current->classes(), $snapshot->classes());
+        unset($current);
+
         foreach ($snapshot->staticAttributes() as $className => $staticAttributes) {
             foreach ($staticAttributes as $name => $value) {
                 $reflector = new ReflectionProperty($className, $name);
@@ -116,6 +83,30 @@ public function restoreStaticAttributes(Snapshot $snapshot)
                 $reflector->setValue($value);
             }
         }
+
+        foreach ($newClasses as $className) {
+            $class    = new \ReflectionClass($className);
+            $defaults = $class->getDefaultProperties();
+
+            foreach ($class->getProperties() as $attribute) {
+                if (!$attribute->isStatic()) {
+                    continue;
+                }
+
+                $name = $attribute->getName();
+
+                if ($snapshot->blacklist()->isStaticAttributeBlacklisted($className, $name)) {
+                    continue;
+                }
+
+                if (!isset($defaults[$name])) {
+                    continue;
+                }
+
+                $attribute->setAccessible(true);
+                $attribute->setValue($defaults[$name]);
+            }
+        }
     }
 
     /**
diff --git a/vendor/sebastian/global-state/src/RuntimeException.php b/vendor/sebastian/global-state/src/RuntimeException.php
index e25e208..c0bf7bd 100644
--- a/vendor/sebastian/global-state/src/RuntimeException.php
+++ b/vendor/sebastian/global-state/src/RuntimeException.php
@@ -1,52 +1,16 @@
 <?php
-/**
- * GlobalState
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
- *
- *   * Neither the name of Sebastian Bergmann nor the names of his
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
+/*
+ * This file is part of the GlobalState package.
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace SebastianBergmann\GlobalState;
 
 /**
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
  */
 class RuntimeException extends \RuntimeException implements Exception
 {
diff --git a/vendor/sebastian/global-state/src/Snapshot.php b/vendor/sebastian/global-state/src/Snapshot.php
index 5fb08be..3c8aaa9 100644
--- a/vendor/sebastian/global-state/src/Snapshot.php
+++ b/vendor/sebastian/global-state/src/Snapshot.php
@@ -1,57 +1,20 @@
 <?php
-/**
- * GlobalState
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
+/*
+ * This file is part of the GlobalState package.
  *
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in
- *     the documentation and/or other materials provided with the
- *     distribution.
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
  *
- *   * Neither the name of Sebastian Bergmann nor the names of his
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
  */
 
 namespace SebastianBergmann\GlobalState;
 
-use Closure;
 use ReflectionClass;
+use Serializable;
 
 /**
  * A snapshot of global state.
- *
- * @author     Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright  2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
- * @link       http://www.github.com/sebastianbergmann/global-state
  */
 class Snapshot
 {
@@ -119,15 +82,15 @@ class Snapshot
      * Creates a snapshot of the current global state.
      *
      * @param Blacklist $blacklist
-     * @param boolean   $includeGlobalVariables
-     * @param boolean   $includeStaticAttributes
-     * @param boolean   $includeConstants
-     * @param boolean   $includeFunctions
-     * @param boolean   $includeClasses
-     * @param boolean   $includeInterfaces
-     * @param boolean   $includeTraits
-     * @param boolean   $includeIniSettings
-     * @param boolean   $includeIncludedFiles
+     * @param bool      $includeGlobalVariables
+     * @param bool      $includeStaticAttributes
+     * @param bool      $includeConstants
+     * @param bool      $includeFunctions
+     * @param bool      $includeClasses
+     * @param bool      $includeInterfaces
+     * @param bool      $includeTraits
+     * @param bool      $includeIniSettings
+     * @param bool      $includeIncludedFiles
      */
     public function __construct(Blacklist $blacklist = null, $includeGlobalVariables = true, $includeStaticAttributes = true, $includeConstants = true, $includeFunctions = true, $includeClasses = true, $includeInterfaces = true, $includeTraits = true, $includeIniSettings = true, $includeIncludedFiles = true)
     {
@@ -434,10 +397,27 @@ private function setupSuperGlobalArrays()
 
     /**
      * @param  mixed $variable
-     * @return boolean
+     * @return bool
      * @todo   Implement this properly
      */
-    private function canBeSerialized($variable) {
-        return !$variable instanceof Closure;
+    private function canBeSerialized($variable)
+    {
+        if (!is_object($variable)) {
+            return !is_resource($variable);
+        }
+
+        if ($variable instanceof \stdClass) {
+            return true;
+        }
+
+        $class = new ReflectionClass($variable);
+
+        do {
+            if ($class->isInternal()) {
+                return $variable instanceof Serializable;
+            }
+        } while ($class = $class->getParentClass());
+
+        return true;
     }
 }
diff --git a/vendor/symfony/browser-kit/composer.json b/vendor/symfony/browser-kit/composer.json
index 2313c73..7c0234e 100644
--- a/vendor/symfony/browser-kit/composer.json
+++ b/vendor/symfony/browser-kit/composer.json
@@ -27,7 +27,10 @@
         "symfony/process": ""
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\BrowserKit\\": "" }
+        "psr-4": { "Symfony\\Component\\BrowserKit\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
diff --git a/vendor/symfony/class-loader/ClassCollectionLoader.php b/vendor/symfony/class-loader/ClassCollectionLoader.php
index c7dc3ae..e33bcbb 100644
--- a/vendor/symfony/class-loader/ClassCollectionLoader.php
+++ b/vendor/symfony/class-loader/ClassCollectionLoader.php
@@ -137,8 +137,8 @@ public static function load($classes, $cacheDir, $name, $autoReload, $adaptive =
     public static function fixNamespaceDeclarations($source)
     {
         if (!function_exists('token_get_all') || !self::$useTokenizer) {
-            if (preg_match('/namespace(.*?)\s*;/', $source)) {
-                $source = preg_replace('/namespace(.*?)\s*;/', "namespace$1\n{", $source)."}\n";
+            if (preg_match('/(^|\s)namespace(.*?)\s*;/', $source)) {
+                $source = preg_replace('/(^|\s)namespace(.*?)\s*;/', "$1namespace$2\n{", $source)."}\n";
             }
 
             return $source;
diff --git a/vendor/symfony/class-loader/composer.json b/vendor/symfony/class-loader/composer.json
index 828e598..c7322c7 100644
--- a/vendor/symfony/class-loader/composer.json
+++ b/vendor/symfony/class-loader/composer.json
@@ -20,14 +20,17 @@
         "php": ">=5.3.9"
     },
     "require-dev": {
-        "symfony/finder": "~2.0,>=2.0.5"
+        "symfony/finder": "~2.0,>=2.0.5|~3.0.0"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\ClassLoader\\": "" }
+        "psr-4": { "Symfony\\Component\\ClassLoader\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php
index e386337..a425fe8 100644
--- a/vendor/symfony/console/Application.php
+++ b/vendor/symfony/console/Application.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Descriptor\TextDescriptor;
 use Symfony\Component\Console\Descriptor\XmlDescriptor;
+use Symfony\Component\Console\Exception\ExceptionInterface;
 use Symfony\Component\Console\Helper\DebugFormatterHelper;
 use Symfony\Component\Console\Helper\ProcessHelper;
 use Symfony\Component\Console\Helper\QuestionHelper;
@@ -38,6 +39,8 @@
 use Symfony\Component\Console\Event\ConsoleCommandEvent;
 use Symfony\Component\Console\Event\ConsoleExceptionEvent;
 use Symfony\Component\Console\Event\ConsoleTerminateEvent;
+use Symfony\Component\Console\Exception\CommandNotFoundException;
+use Symfony\Component\Console\Exception\LogicException;
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 
 /**
@@ -360,7 +363,7 @@ public function add(Command $command)
         }
 
         if (null === $command->getDefinition()) {
-            throw new \LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', get_class($command)));
+            throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', get_class($command)));
         }
 
         $this->commands[$command->getName()] = $command;
@@ -379,12 +382,12 @@ public function add(Command $command)
      *
      * @return Command A Command object
      *
-     * @throws \InvalidArgumentException When command name given does not exist
+     * @throws CommandNotFoundException When command name given does not exist
      */
     public function get($name)
     {
         if (!isset($this->commands[$name])) {
-            throw new \InvalidArgumentException(sprintf('The command "%s" does not exist.', $name));
+            throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name));
         }
 
         $command = $this->commands[$name];
@@ -441,7 +444,7 @@ public function getNamespaces()
      *
      * @return string A registered namespace
      *
-     * @throws \InvalidArgumentException When namespace is incorrect or ambiguous
+     * @throws CommandNotFoundException When namespace is incorrect or ambiguous
      */
     public function findNamespace($namespace)
     {
@@ -462,12 +465,12 @@ public function findNamespace($namespace)
                 $message .= implode("\n    ", $alternatives);
             }
 
-            throw new \InvalidArgumentException($message);
+            throw new CommandNotFoundException($message, $alternatives);
         }
 
         $exact = in_array($namespace, $namespaces, true);
         if (count($namespaces) > 1 && !$exact) {
-            throw new \InvalidArgumentException(sprintf('The namespace "%s" is ambiguous (%s).', $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))));
+            throw new CommandNotFoundException(sprintf('The namespace "%s" is ambiguous (%s).', $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces));
         }
 
         return $exact ? $namespace : reset($namespaces);
@@ -483,7 +486,7 @@ public function findNamespace($namespace)
      *
      * @return Command A Command instance
      *
-     * @throws \InvalidArgumentException When command name is incorrect or ambiguous
+     * @throws CommandNotFoundException When command name is incorrect or ambiguous
      */
     public function find($name)
     {
@@ -508,7 +511,7 @@ public function find($name)
                 $message .= implode("\n    ", $alternatives);
             }
 
-            throw new \InvalidArgumentException($message);
+            throw new CommandNotFoundException($message, $alternatives);
         }
 
         // filter out aliases for commands which are already on the list
@@ -525,7 +528,7 @@ public function find($name)
         if (count($commands) > 1 && !$exact) {
             $suggestions = $this->getAbbreviationSuggestions(array_values($commands));
 
-            throw new \InvalidArgumentException(sprintf('Command "%s" is ambiguous (%s).', $name, $suggestions));
+            throw new CommandNotFoundException(sprintf('Command "%s" is ambiguous (%s).', $name, $suggestions), array_values($commands));
         }
 
         return $this->get($exact ? $name : reset($commands));
@@ -663,10 +666,10 @@ public function renderException($e, $output)
             $messages[] = '';
             $messages[] = '';
 
-            $output->writeln($messages, OutputInterface::OUTPUT_RAW);
+            $output->writeln($messages, OutputInterface::OUTPUT_RAW | OutputInterface::VERBOSITY_QUIET);
 
             if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) {
-                $output->writeln('<comment>Exception trace:</comment>');
+                $output->writeln('<comment>Exception trace:</comment>', OutputInterface::VERBOSITY_QUIET);
 
                 // exception related properties
                 $trace = $e->getTrace();
@@ -684,18 +687,18 @@ public function renderException($e, $output)
                     $file = isset($trace[$i]['file']) ? $trace[$i]['file'] : 'n/a';
                     $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a';
 
-                    $output->writeln(sprintf(' %s%s%s() at <info>%s:%s</info>', $class, $type, $function, $file, $line));
+                    $output->writeln(sprintf(' %s%s%s() at <info>%s:%s</info>', $class, $type, $function, $file, $line), OutputInterface::VERBOSITY_QUIET);
                 }
 
-                $output->writeln('');
-                $output->writeln('');
+                $output->writeln('', OutputInterface::VERBOSITY_QUIET);
+                $output->writeln('', OutputInterface::VERBOSITY_QUIET);
             }
         } while ($e = $e->getPrevious());
 
         if (null !== $this->runningCommand) {
-            $output->writeln(sprintf('<info>%s</info>', sprintf($this->runningCommand->getSynopsis(), $this->getName())));
-            $output->writeln('');
-            $output->writeln('');
+            $output->writeln(sprintf('<info>%s</info>', sprintf($this->runningCommand->getSynopsis(), $this->getName())), OutputInterface::VERBOSITY_QUIET);
+            $output->writeln('', OutputInterface::VERBOSITY_QUIET);
+            $output->writeln('', OutputInterface::VERBOSITY_QUIET);
         }
     }
 
@@ -838,6 +841,14 @@ protected function doRunCommand(Command $command, InputInterface $input, OutputI
             return $command->run($input, $output);
         }
 
+        // bind before the console.command event, so the listeners have access to input options/arguments
+        try {
+            $command->mergeApplicationDefinition();
+            $input->bind($command->getDefinition());
+        } catch (ExceptionInterface $e) {
+            // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition
+        }
+
         $event = new ConsoleCommandEvent($command, $input, $output);
         $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event);
 
@@ -1066,11 +1077,7 @@ public function setDefaultCommand($commandName)
 
     private function stringWidth($string)
     {
-        if (!function_exists('mb_strwidth')) {
-            return strlen($string);
-        }
-
-        if (false === $encoding = mb_detect_encoding($string)) {
+        if (false === $encoding = mb_detect_encoding($string, null, true)) {
             return strlen($string);
         }
 
@@ -1082,12 +1089,7 @@ private function splitStringByWidth($string, $width)
         // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly.
         // additionally, array_slice() is not enough as some character has doubled width.
         // we need a function to split string not by character count but by string width
-
-        if (!function_exists('mb_strwidth')) {
-            return str_split($string, $width);
-        }
-
-        if (false === $encoding = mb_detect_encoding($string)) {
+        if (false === $encoding = mb_detect_encoding($string, null, true)) {
             return str_split($string, $width);
         }
 
diff --git a/vendor/symfony/console/CHANGELOG.md b/vendor/symfony/console/CHANGELOG.md
index 07254c6..4e29d2e 100644
--- a/vendor/symfony/console/CHANGELOG.md
+++ b/vendor/symfony/console/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * use readline for user input in the question helper when available to allow
+   the use of arrow keys
+
 2.6.0
 -----
 
diff --git a/vendor/symfony/console/Command/Command.php b/vendor/symfony/console/Command/Command.php
index 51a8a39..0522068 100644
--- a/vendor/symfony/console/Command/Command.php
+++ b/vendor/symfony/console/Command/Command.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Descriptor\TextDescriptor;
 use Symfony\Component\Console\Descriptor\XmlDescriptor;
+use Symfony\Component\Console\Exception\ExceptionInterface;
 use Symfony\Component\Console\Input\InputDefinition;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputArgument;
@@ -21,6 +22,8 @@
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Application;
 use Symfony\Component\Console\Helper\HelperSet;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
 
 /**
  * Base class for all commands.
@@ -49,7 +52,7 @@ class Command
      *
      * @param string|null $name The name of the command; passing null means it must be set in configure()
      *
-     * @throws \LogicException When the command name is empty
+     * @throws LogicException When the command name is empty
      */
     public function __construct($name = null)
     {
@@ -62,7 +65,7 @@ public function __construct($name = null)
         $this->configure();
 
         if (!$this->name) {
-            throw new \LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_class($this)));
+            throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_class($this)));
         }
     }
 
@@ -154,13 +157,13 @@ protected function configure()
      *
      * @return null|int null or 0 if everything went fine, or an error code
      *
-     * @throws \LogicException When this abstract method is not implemented
+     * @throws LogicException When this abstract method is not implemented
      *
      * @see setCode()
      */
     protected function execute(InputInterface $input, OutputInterface $output)
     {
-        throw new \LogicException('You must override the execute() method in the concrete command class.');
+        throw new LogicException('You must override the execute() method in the concrete command class.');
     }
 
     /**
@@ -219,7 +222,7 @@ public function run(InputInterface $input, OutputInterface $output)
         // bind the input against the command specific arguments/options
         try {
             $input->bind($this->definition);
-        } catch (\Exception $e) {
+        } catch (ExceptionInterface $e) {
             if (!$this->ignoreValidationErrors) {
                 throw $e;
             }
@@ -269,14 +272,21 @@ public function run(InputInterface $input, OutputInterface $output)
      *
      * @return Command The current instance
      *
-     * @throws \InvalidArgumentException
+     * @throws InvalidArgumentException
      *
      * @see execute()
      */
     public function setCode($code)
     {
         if (!is_callable($code)) {
-            throw new \InvalidArgumentException('Invalid callable provided to Command::setCode.');
+            throw new InvalidArgumentException('Invalid callable provided to Command::setCode.');
+        }
+
+        if (PHP_VERSION_ID >= 50400 && $code instanceof \Closure) {
+            $r = new \ReflectionFunction($code);
+            if (null === $r->getClosureThis()) {
+                $code = \Closure::bind($code, $this);
+            }
         }
 
         $this->code = $code;
@@ -403,7 +413,7 @@ public function addOption($name, $shortcut = null, $mode = null, $description =
      *
      * @return Command The current instance
      *
-     * @throws \InvalidArgumentException When the name is invalid
+     * @throws InvalidArgumentException When the name is invalid
      */
     public function setName($name)
     {
@@ -520,12 +530,12 @@ public function getProcessedHelp()
      *
      * @return Command The current instance
      *
-     * @throws \InvalidArgumentException When an alias is invalid
+     * @throws InvalidArgumentException When an alias is invalid
      */
     public function setAliases($aliases)
     {
         if (!is_array($aliases) && !$aliases instanceof \Traversable) {
-            throw new \InvalidArgumentException('$aliases must be an array or an instance of \Traversable');
+            throw new InvalidArgumentException('$aliases must be an array or an instance of \Traversable');
         }
 
         foreach ($aliases as $alias) {
@@ -598,7 +608,7 @@ public function getUsages()
      *
      * @return mixed The helper value
      *
-     * @throws \InvalidArgumentException if the helper is not defined
+     * @throws InvalidArgumentException if the helper is not defined
      */
     public function getHelper($name)
     {
@@ -655,12 +665,12 @@ public function asXml($asDom = false)
      *
      * @param string $name
      *
-     * @throws \InvalidArgumentException When the name is invalid
+     * @throws InvalidArgumentException When the name is invalid
      */
     private function validateName($name)
     {
         if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) {
-            throw new \InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name));
+            throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name));
         }
     }
 }
diff --git a/vendor/symfony/console/Descriptor/ApplicationDescription.php b/vendor/symfony/console/Descriptor/ApplicationDescription.php
index 0e87193..89961b9 100644
--- a/vendor/symfony/console/Descriptor/ApplicationDescription.php
+++ b/vendor/symfony/console/Descriptor/ApplicationDescription.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Application;
 use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Exception\CommandNotFoundException;
 
 /**
  * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
@@ -89,12 +90,12 @@ public function getCommands()
      *
      * @return Command
      *
-     * @throws \InvalidArgumentException
+     * @throws CommandNotFoundException
      */
     public function getCommand($name)
     {
         if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) {
-            throw new \InvalidArgumentException(sprintf('Command %s does not exist.', $name));
+            throw new CommandNotFoundException(sprintf('Command %s does not exist.', $name));
         }
 
         return isset($this->commands[$name]) ? $this->commands[$name] : $this->aliases[$name];
diff --git a/vendor/symfony/console/Descriptor/Descriptor.php b/vendor/symfony/console/Descriptor/Descriptor.php
index 49e2193..43a7a0a 100644
--- a/vendor/symfony/console/Descriptor/Descriptor.php
+++ b/vendor/symfony/console/Descriptor/Descriptor.php
@@ -17,6 +17,7 @@
 use Symfony\Component\Console\Input\InputDefinition;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
 
 /**
  * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
@@ -54,7 +55,7 @@ public function describe(OutputInterface $output, $object, array $options = arra
                 $this->describeApplication($object, $options);
                 break;
             default:
-                throw new \InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
+                throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
         }
     }
 
diff --git a/vendor/symfony/console/Descriptor/TextDescriptor.php b/vendor/symfony/console/Descriptor/TextDescriptor.php
index 57e09e4..f2895bd 100644
--- a/vendor/symfony/console/Descriptor/TextDescriptor.php
+++ b/vendor/symfony/console/Descriptor/TextDescriptor.php
@@ -236,10 +236,10 @@ private function writeText($content, array $options = array())
     private function formatDefaultValue($default)
     {
         if (PHP_VERSION_ID < 50400) {
-            return str_replace('\/', '/', json_encode($default));
+            return str_replace(array('\/', '\\\\'), array('/', '\\'), json_encode($default));
         }
 
-        return json_encode($default, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+        return str_replace('\\\\', '\\', json_encode($default, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
     }
 
     /**
diff --git a/vendor/symfony/console/Exception/CommandNotFoundException.php b/vendor/symfony/console/Exception/CommandNotFoundException.php
new file mode 100644
index 0000000..ce6fefe
--- /dev/null
+++ b/vendor/symfony/console/Exception/CommandNotFoundException.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * Represents an incorrect command name typed in the console.
+ *
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+class CommandNotFoundException extends \InvalidArgumentException implements ExceptionInterface
+{
+    private $alternatives;
+
+    /**
+     * @param string    $message      Exception message to throw.
+     * @param array     $alternatives List of similar defined names.
+     * @param int       $code         Exception code.
+     * @param Exception $previous     previous exception used for the exception chaining.
+     */
+    public function __construct($message, array $alternatives = array(), $code = 0, \Exception $previous = null)
+    {
+        parent::__construct($message, $code, $previous);
+
+        $this->alternatives = $alternatives;
+    }
+
+    /**
+     * @return array A list of similar defined names.
+     */
+    public function getAlternatives()
+    {
+        return $this->alternatives;
+    }
+}
diff --git a/vendor/symfony/console/Exception/ExceptionInterface.php b/vendor/symfony/console/Exception/ExceptionInterface.php
new file mode 100644
index 0000000..491cc4c
--- /dev/null
+++ b/vendor/symfony/console/Exception/ExceptionInterface.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * ExceptionInterface.
+ *
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+interface ExceptionInterface
+{
+}
diff --git a/vendor/symfony/console/Exception/InvalidArgumentException.php b/vendor/symfony/console/Exception/InvalidArgumentException.php
new file mode 100644
index 0000000..07cc0b6
--- /dev/null
+++ b/vendor/symfony/console/Exception/InvalidArgumentException.php
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/console/Exception/InvalidOptionException.php b/vendor/symfony/console/Exception/InvalidOptionException.php
new file mode 100644
index 0000000..b2eec61
--- /dev/null
+++ b/vendor/symfony/console/Exception/InvalidOptionException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * Represents an incorrect option name typed in the console.
+ *
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+class InvalidOptionException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/console/Exception/LogicException.php b/vendor/symfony/console/Exception/LogicException.php
new file mode 100644
index 0000000..fc37b8d
--- /dev/null
+++ b/vendor/symfony/console/Exception/LogicException.php
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+class LogicException extends \LogicException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/console/Exception/RuntimeException.php b/vendor/symfony/console/Exception/RuntimeException.php
new file mode 100644
index 0000000..51d7d80
--- /dev/null
+++ b/vendor/symfony/console/Exception/RuntimeException.php
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Exception;
+
+/**
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
+ */
+class RuntimeException extends \RuntimeException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/console/Formatter/OutputFormatter.php b/vendor/symfony/console/Formatter/OutputFormatter.php
index 7a78eb2..244e25c 100644
--- a/vendor/symfony/console/Formatter/OutputFormatter.php
+++ b/vendor/symfony/console/Formatter/OutputFormatter.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Formatter;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * Formatter class for console output.
  *
@@ -106,12 +108,12 @@ public function hasStyle($name)
      *
      * @return OutputFormatterStyleInterface
      *
-     * @throws \InvalidArgumentException When style isn't defined
+     * @throws InvalidArgumentException When style isn't defined
      */
     public function getStyle($name)
     {
         if (!$this->hasStyle($name)) {
-            throw new \InvalidArgumentException(sprintf('Undefined style: %s', $name));
+            throw new InvalidArgumentException(sprintf('Undefined style: %s', $name));
         }
 
         return $this->styles[strtolower($name)];
diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyle.php b/vendor/symfony/console/Formatter/OutputFormatterStyle.php
index 4d3eda3..c7c6b4a 100644
--- a/vendor/symfony/console/Formatter/OutputFormatterStyle.php
+++ b/vendor/symfony/console/Formatter/OutputFormatterStyle.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Formatter;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * Formatter style class for defining styles.
  *
@@ -77,7 +79,7 @@ public function __construct($foreground = null, $background = null, array $optio
      *
      * @param string|null $color The color name
      *
-     * @throws \InvalidArgumentException When the color name isn't defined
+     * @throws InvalidArgumentException When the color name isn't defined
      */
     public function setForeground($color = null)
     {
@@ -88,7 +90,7 @@ public function setForeground($color = null)
         }
 
         if (!isset(static::$availableForegroundColors[$color])) {
-            throw new \InvalidArgumentException(sprintf(
+            throw new InvalidArgumentException(sprintf(
                 'Invalid foreground color specified: "%s". Expected one of (%s)',
                 $color,
                 implode(', ', array_keys(static::$availableForegroundColors))
@@ -103,7 +105,7 @@ public function setForeground($color = null)
      *
      * @param string|null $color The color name
      *
-     * @throws \InvalidArgumentException When the color name isn't defined
+     * @throws InvalidArgumentException When the color name isn't defined
      */
     public function setBackground($color = null)
     {
@@ -114,7 +116,7 @@ public function setBackground($color = null)
         }
 
         if (!isset(static::$availableBackgroundColors[$color])) {
-            throw new \InvalidArgumentException(sprintf(
+            throw new InvalidArgumentException(sprintf(
                 'Invalid background color specified: "%s". Expected one of (%s)',
                 $color,
                 implode(', ', array_keys(static::$availableBackgroundColors))
@@ -129,12 +131,12 @@ public function setBackground($color = null)
      *
      * @param string $option The option name
      *
-     * @throws \InvalidArgumentException When the option name isn't defined
+     * @throws InvalidArgumentException When the option name isn't defined
      */
     public function setOption($option)
     {
         if (!isset(static::$availableOptions[$option])) {
-            throw new \InvalidArgumentException(sprintf(
+            throw new InvalidArgumentException(sprintf(
                 'Invalid option specified: "%s". Expected one of (%s)',
                 $option,
                 implode(', ', array_keys(static::$availableOptions))
@@ -151,12 +153,12 @@ public function setOption($option)
      *
      * @param string $option The option name
      *
-     * @throws \InvalidArgumentException When the option name isn't defined
+     * @throws InvalidArgumentException When the option name isn't defined
      */
     public function unsetOption($option)
     {
         if (!isset(static::$availableOptions[$option])) {
-            throw new \InvalidArgumentException(sprintf(
+            throw new InvalidArgumentException(sprintf(
                 'Invalid option specified: "%s". Expected one of (%s)',
                 $option,
                 implode(', ', array_keys(static::$availableOptions))
diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php
index b64c87f..e5d14ea 100644
--- a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php
+++ b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Formatter;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * @author Jean-François Simon <contact@jfsimon.fr>
  */
@@ -62,7 +64,7 @@ public function push(OutputFormatterStyleInterface $style)
      *
      * @return OutputFormatterStyleInterface
      *
-     * @throws \InvalidArgumentException When style tags incorrectly nested
+     * @throws InvalidArgumentException When style tags incorrectly nested
      */
     public function pop(OutputFormatterStyleInterface $style = null)
     {
@@ -82,7 +84,7 @@ public function pop(OutputFormatterStyleInterface $style = null)
             }
         }
 
-        throw new \InvalidArgumentException('Incorrectly nested style tag found.');
+        throw new InvalidArgumentException('Incorrectly nested style tag found.');
     }
 
     /**
diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php
index c324c99..a53b476 100644
--- a/vendor/symfony/console/Helper/DescriptorHelper.php
+++ b/vendor/symfony/console/Helper/DescriptorHelper.php
@@ -17,6 +17,7 @@
 use Symfony\Component\Console\Descriptor\TextDescriptor;
 use Symfony\Component\Console\Descriptor\XmlDescriptor;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
 
 /**
  * This class adds helper method to describe objects in various formats.
@@ -54,7 +55,7 @@ public function __construct()
      * @param object          $object
      * @param array           $options
      *
-     * @throws \InvalidArgumentException when the given format is not supported
+     * @throws InvalidArgumentException when the given format is not supported
      */
     public function describe(OutputInterface $output, $object, array $options = array())
     {
@@ -64,7 +65,7 @@ public function describe(OutputInterface $output, $object, array $options = arra
         ), $options);
 
         if (!isset($this->descriptors[$options['format']])) {
-            throw new \InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format']));
+            throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format']));
         }
 
         $descriptor = $this->descriptors[$options['format']];
diff --git a/vendor/symfony/console/Helper/DialogHelper.php b/vendor/symfony/console/Helper/DialogHelper.php
index dbadac2..1c1d247 100644
--- a/vendor/symfony/console/Helper/DialogHelper.php
+++ b/vendor/symfony/console/Helper/DialogHelper.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Helper;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\RuntimeException;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Formatter\OutputFormatterStyle;
 
@@ -48,7 +50,7 @@ public function __construct($triggerDeprecationError = true)
      *
      * @return int|string|array The selected value or values (the key of the choices array)
      *
-     * @throws \InvalidArgumentException
+     * @throws InvalidArgumentException
      */
     public function select(OutputInterface $output, $question, $choices, $default = null, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false)
     {
@@ -68,7 +70,7 @@ public function select(OutputInterface $output, $question, $choices, $default =
             if ($multiselect) {
                 // Check for a separated comma values
                 if (!preg_match('/^[a-zA-Z0-9_-]+(?:,[a-zA-Z0-9_-]+)*$/', $selectedChoices, $matches)) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $picked));
+                    throw new InvalidArgumentException(sprintf($errorMessage, $picked));
                 }
                 $selectedChoices = explode(',', $selectedChoices);
             } else {
@@ -79,7 +81,7 @@ public function select(OutputInterface $output, $question, $choices, $default =
 
             foreach ($selectedChoices as $value) {
                 if (empty($choices[$value])) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $value));
+                    throw new InvalidArgumentException(sprintf($errorMessage, $value));
                 }
                 $multiselectChoices[] = $value;
             }
@@ -104,7 +106,7 @@ public function select(OutputInterface $output, $question, $choices, $default =
      *
      * @return string The user answer
      *
-     * @throws \RuntimeException If there is no data to read in the input stream
+     * @throws RuntimeException If there is no data to read in the input stream
      */
     public function ask(OutputInterface $output, $question, $default = null, array $autocomplete = null)
     {
@@ -119,7 +121,7 @@ public function ask(OutputInterface $output, $question, $default = null, array $
         if (null === $autocomplete || !$this->hasSttyAvailable()) {
             $ret = fgets($inputStream, 4096);
             if (false === $ret) {
-                throw new \RuntimeException('Aborted');
+                throw new RuntimeException('Aborted');
             }
             $ret = trim($ret);
         } else {
@@ -265,7 +267,7 @@ public function askConfirmation(OutputInterface $output, $question, $default = t
      *
      * @return string The answer
      *
-     * @throws \RuntimeException In case the fallback is deactivated and the response can not be hidden
+     * @throws RuntimeException In case the fallback is deactivated and the response can not be hidden
      */
     public function askHiddenResponse(OutputInterface $output, $question, $fallback = true)
     {
@@ -300,7 +302,7 @@ public function askHiddenResponse(OutputInterface $output, $question, $fallback
             shell_exec(sprintf('stty %s', $sttyMode));
 
             if (false === $value) {
-                throw new \RuntimeException('Aborted');
+                throw new RuntimeException('Aborted');
             }
 
             $value = trim($value);
@@ -323,7 +325,7 @@ public function askHiddenResponse(OutputInterface $output, $question, $fallback
             return $this->ask($output, $question);
         }
 
-        throw new \RuntimeException('Unable to hide the response');
+        throw new RuntimeException('Unable to hide the response');
     }
 
     /**
@@ -370,8 +372,8 @@ public function askAndValidate(OutputInterface $output, $question, $validator, $
      *
      * @return string The response
      *
-     * @throws \Exception        When any of the validators return an error
-     * @throws \RuntimeException In case the fallback is deactivated and the response can not be hidden
+     * @throws \Exception       When any of the validators return an error
+     * @throws RuntimeException In case the fallback is deactivated and the response can not be hidden
      */
     public function askHiddenResponseAndValidate(OutputInterface $output, $question, $validator, $attempts = false, $fallback = true)
     {
diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php
index b288d44..b542be3 100644
--- a/vendor/symfony/console/Helper/Helper.php
+++ b/vendor/symfony/console/Helper/Helper.php
@@ -51,11 +51,7 @@ public function getHelperSet()
      */
     public static function strlen($string)
     {
-        if (!function_exists('mb_strwidth')) {
-            return strlen($string);
-        }
-
-        if (false === $encoding = mb_detect_encoding($string)) {
+        if (false === $encoding = mb_detect_encoding($string, null, true)) {
             return strlen($string);
         }
 
diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php
index 00354dd..27fedcf 100644
--- a/vendor/symfony/console/Helper/HelperSet.php
+++ b/vendor/symfony/console/Helper/HelperSet.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\Console\Helper;
 
 use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
 
 /**
  * HelperSet represents a set of helpers to be used with a command.
@@ -70,12 +71,12 @@ public function has($name)
      *
      * @return HelperInterface The helper instance
      *
-     * @throws \InvalidArgumentException if the helper is not defined
+     * @throws InvalidArgumentException if the helper is not defined
      */
     public function get($name)
     {
         if (!$this->has($name)) {
-            throw new \InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name));
+            throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name));
         }
 
         if ('dialog' === $name && $this->helpers[$name] instanceof DialogHelper) {
diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php
index 0b64b18..b443013 100644
--- a/vendor/symfony/console/Helper/ProgressBar.php
+++ b/vendor/symfony/console/Helper/ProgressBar.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Output\ConsoleOutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Exception\LogicException;
 
 /**
  * The ProgressBar provides helpers to display progress output.
@@ -346,7 +347,7 @@ public function start($max = null)
      *
      * @param int $step Number of steps to advance
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function advance($step = 1)
     {
@@ -360,7 +361,7 @@ public function advance($step = 1)
      *
      * @param int $step The current progress
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function setCurrent($step)
     {
@@ -384,13 +385,13 @@ public function setOverwrite($overwrite)
      *
      * @param int $step The current progress
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function setProgress($step)
     {
         $step = (int) $step;
         if ($step < $this->step) {
-            throw new \LogicException('You can\'t regress the progress bar.');
+            throw new LogicException('You can\'t regress the progress bar.');
         }
 
         if ($this->max && $step > $this->max) {
@@ -580,7 +581,7 @@ private static function initPlaceholderFormatters()
             },
             'remaining' => function (ProgressBar $bar) {
                 if (!$bar->getMaxSteps()) {
-                    throw new \LogicException('Unable to display the remaining time if the maximum number of steps is not set.');
+                    throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.');
                 }
 
                 if (!$bar->getProgress()) {
@@ -593,7 +594,7 @@ private static function initPlaceholderFormatters()
             },
             'estimated' => function (ProgressBar $bar) {
                 if (!$bar->getMaxSteps()) {
-                    throw new \LogicException('Unable to display the estimated time if the maximum number of steps is not set.');
+                    throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.');
                 }
 
                 if (!$bar->getProgress()) {
diff --git a/vendor/symfony/console/Helper/ProgressHelper.php b/vendor/symfony/console/Helper/ProgressHelper.php
index bd88566..e92f24c 100644
--- a/vendor/symfony/console/Helper/ProgressHelper.php
+++ b/vendor/symfony/console/Helper/ProgressHelper.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Output\NullOutput;
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Exception\LogicException;
 
 /**
  * The Progress class provides helpers to display progress output.
@@ -236,7 +237,7 @@ public function start(OutputInterface $output, $max = null)
      * @param int  $step   Number of steps to advance
      * @param bool $redraw Whether to redraw or not
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function advance($step = 1, $redraw = false)
     {
@@ -249,18 +250,18 @@ public function advance($step = 1, $redraw = false)
      * @param int  $current The current progress
      * @param bool $redraw  Whether to redraw or not
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function setCurrent($current, $redraw = false)
     {
         if (null === $this->startTime) {
-            throw new \LogicException('You must start the progress bar before calling setCurrent().');
+            throw new LogicException('You must start the progress bar before calling setCurrent().');
         }
 
         $current = (int) $current;
 
         if ($current < $this->current) {
-            throw new \LogicException('You can\'t regress the progress bar');
+            throw new LogicException('You can\'t regress the progress bar');
         }
 
         if (0 === $this->current) {
@@ -282,12 +283,12 @@ public function setCurrent($current, $redraw = false)
      *
      * @param bool $finish Forces the end result
      *
-     * @throws \LogicException
+     * @throws LogicException
      */
     public function display($finish = false)
     {
         if (null === $this->startTime) {
-            throw new \LogicException('You must start the progress bar before calling display().');
+            throw new LogicException('You must start the progress bar before calling display().');
         }
 
         $message = $this->format;
@@ -315,7 +316,7 @@ public function clear()
     public function finish()
     {
         if (null === $this->startTime) {
-            throw new \LogicException('You must start the progress bar before calling finish().');
+            throw new LogicException('You must start the progress bar before calling finish().');
         }
 
         if (null !== $this->startTime) {
diff --git a/vendor/symfony/console/Helper/ProgressIndicator.php b/vendor/symfony/console/Helper/ProgressIndicator.php
new file mode 100644
index 0000000..8c8a49c
--- /dev/null
+++ b/vendor/symfony/console/Helper/ProgressIndicator.php
@@ -0,0 +1,322 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Console\Helper;
+
+use Symfony\Component\Console\Output\OutputInterface;
+
+/**
+ * @author Kevin Bond <kevinbond@gmail.com>
+ */
+class ProgressIndicator
+{
+    private $output;
+    private $startTime;
+    private $format;
+    private $message;
+    private $indicatorValues;
+    private $indicatorCurrent;
+    private $indicatorChangeInterval;
+    private $indicatorUpdateTime;
+    private $lastMessagesLength;
+    private $started = false;
+
+    private static $formatters;
+    private static $formats;
+
+    /**
+     * @param OutputInterface $output
+     * @param string|null     $format                  Indicator format
+     * @param int             $indicatorChangeInterval Change interval in milliseconds
+     * @param array|null      $indicatorValues         Animated indicator characters
+     */
+    public function __construct(OutputInterface $output, $format = null, $indicatorChangeInterval = 100, $indicatorValues = null)
+    {
+        $this->output = $output;
+
+        if (null === $format) {
+            $format = $this->determineBestFormat();
+        }
+
+        if (null === $indicatorValues) {
+            $indicatorValues = array('-', '\\', '|', '/');
+        }
+
+        $indicatorValues = array_values($indicatorValues);
+
+        if (2 > count($indicatorValues)) {
+            throw new \InvalidArgumentException('Must have at least 2 indicator value characters.');
+        }
+
+        $this->format = self::getFormatDefinition($format);
+        $this->indicatorChangeInterval = $indicatorChangeInterval;
+        $this->indicatorValues = $indicatorValues;
+        $this->startTime = time();
+    }
+
+    /**
+     * Sets the current indicator message.
+     *
+     * @param string|null $message
+     */
+    public function setMessage($message)
+    {
+        $this->message = $message;
+
+        $this->display();
+    }
+
+    /**
+     * Gets the current indicator message.
+     *
+     * @return string|null
+     *
+     * @internal for PHP 5.3 compatibility
+     */
+    public function getMessage()
+    {
+        return $this->message;
+    }
+
+    /**
+     * Gets the progress bar start time.
+     *
+     * @return int The progress bar start time
+     *
+     * @internal for PHP 5.3 compatibility
+     */
+    public function getStartTime()
+    {
+        return $this->startTime;
+    }
+
+    /**
+     * Gets the current animated indicator character.
+     *
+     * @return string
+     *
+     * @internal for PHP 5.3 compatibility
+     */
+    public function getCurrentValue()
+    {
+        return $this->indicatorValues[$this->indicatorCurrent % count($this->indicatorValues)];
+    }
+
+    /**
+     * Starts the indicator output.
+     *
+     * @param $message
+     */
+    public function start($message)
+    {
+        if ($this->started) {
+            throw new \LogicException('Progress indicator already started.');
+        }
+
+        $this->message = $message;
+        $this->started = true;
+        $this->lastMessagesLength = 0;
+        $this->startTime = time();
+        $this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval;
+        $this->indicatorCurrent = 0;
+
+        $this->display();
+    }
+
+    /**
+     * Advances the indicator.
+     */
+    public function advance()
+    {
+        if (!$this->started) {
+            throw new \LogicException('Progress indicator has not yet been started.');
+        }
+
+        if (!$this->output->isDecorated()) {
+            return;
+        }
+
+        $currentTime = $this->getCurrentTimeInMilliseconds();
+
+        if ($currentTime < $this->indicatorUpdateTime) {
+            return;
+        }
+
+        $this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval;
+        ++$this->indicatorCurrent;
+
+        $this->display();
+    }
+
+    /**
+     * Finish the indicator with message.
+     *
+     * @param $message
+     */
+    public function finish($message)
+    {
+        if (!$this->started) {
+            throw new \LogicException('Progress indicator has not yet been started.');
+        }
+
+        $this->message = $message;
+        $this->display();
+        $this->output->writeln('');
+        $this->started = false;
+    }
+
+    /**
+     * Gets the format for a given name.
+     *
+     * @param string $name The format name
+     *
+     * @return string|null A format string
+     */
+    public static function getFormatDefinition($name)
+    {
+        if (!self::$formats) {
+            self::$formats = self::initFormats();
+        }
+
+        return isset(self::$formats[$name]) ? self::$formats[$name] : null;
+    }
+
+    /**
+     * Sets a placeholder formatter for a given name.
+     *
+     * This method also allow you to override an existing placeholder.
+     *
+     * @param string   $name     The placeholder name (including the delimiter char like %)
+     * @param callable $callable A PHP callable
+     */
+    public static function setPlaceholderFormatterDefinition($name, $callable)
+    {
+        if (!self::$formatters) {
+            self::$formatters = self::initPlaceholderFormatters();
+        }
+
+        self::$formatters[$name] = $callable;
+    }
+
+    /**
+     * Gets the placeholder formatter for a given name.
+     *
+     * @param string $name The placeholder name (including the delimiter char like %)
+     *
+     * @return callable|null A PHP callable
+     */
+    public static function getPlaceholderFormatterDefinition($name)
+    {
+        if (!self::$formatters) {
+            self::$formatters = self::initPlaceholderFormatters();
+        }
+
+        return isset(self::$formatters[$name]) ? self::$formatters[$name] : null;
+    }
+
+    private function display()
+    {
+        if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) {
+            return;
+        }
+
+        $self = $this;
+
+        $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self) {
+            if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) {
+                return call_user_func($formatter, $self);
+            }
+
+            return $matches[0];
+        }, $this->format));
+    }
+
+    private function determineBestFormat()
+    {
+        switch ($this->output->getVerbosity()) {
+            // OutputInterface::VERBOSITY_QUIET: display is disabled anyway
+            case OutputInterface::VERBOSITY_VERBOSE:
+                return $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi';
+            case OutputInterface::VERBOSITY_VERY_VERBOSE:
+            case OutputInterface::VERBOSITY_DEBUG:
+                return $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi';
+            default:
+                return $this->output->isDecorated() ? 'normal' : 'normal_no_ansi';
+        }
+    }
+
+    /**
+     * Overwrites a previous message to the output.
+     *
+     * @param string $message The message
+     */
+    private function overwrite($message)
+    {
+        // append whitespace to match the line's length
+        if (null !== $this->lastMessagesLength) {
+            if ($this->lastMessagesLength > Helper::strlenWithoutDecoration($this->output->getFormatter(), $message)) {
+                $message = str_pad($message, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT);
+            }
+        }
+
+        if ($this->output->isDecorated()) {
+            $this->output->write("\x0D");
+            $this->output->write($message);
+        } else {
+            $this->output->writeln($message);
+        }
+
+        $this->lastMessagesLength = 0;
+
+        $len = Helper::strlenWithoutDecoration($this->output->getFormatter(), $message);
+
+        if ($len > $this->lastMessagesLength) {
+            $this->lastMessagesLength = $len;
+        }
+    }
+
+    private function getCurrentTimeInMilliseconds()
+    {
+        return round(microtime(true) * 1000);
+    }
+
+    private static function initPlaceholderFormatters()
+    {
+        return array(
+            'indicator' => function (ProgressIndicator $indicator) {
+                return $indicator->getCurrentValue();
+            },
+            'message' => function (ProgressIndicator $indicator) {
+                return $indicator->getMessage();
+            },
+            'elapsed' => function (ProgressIndicator $indicator) {
+                return Helper::formatTime(time() - $indicator->getStartTime());
+            },
+            'memory' => function () {
+                return Helper::formatMemory(memory_get_usage(true));
+            },
+        );
+    }
+
+    private static function initFormats()
+    {
+        return array(
+            'normal' => ' %indicator% %message%',
+            'normal_no_ansi' => ' %message%',
+
+            'verbose' => ' %indicator% %message% (%elapsed:6s%)',
+            'verbose_no_ansi' => ' %message% (%elapsed:6s%)',
+
+            'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)',
+            'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)',
+        );
+    }
+}
diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php
index a533f87..3707ffe 100644
--- a/vendor/symfony/console/Helper/QuestionHelper.php
+++ b/vendor/symfony/console/Helper/QuestionHelper.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Helper;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\RuntimeException;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\ConsoleOutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
@@ -38,7 +40,7 @@ class QuestionHelper extends Helper
      *
      * @return string The user answer
      *
-     * @throws \RuntimeException If there is no data to read in the input stream
+     * @throws RuntimeException If there is no data to read in the input stream
      */
     public function ask(InputInterface $input, OutputInterface $output, Question $question)
     {
@@ -70,12 +72,12 @@ public function ask(InputInterface $input, OutputInterface $output, Question $qu
      *
      * @param resource $stream The input stream
      *
-     * @throws \InvalidArgumentException In case the stream is not a resource
+     * @throws InvalidArgumentException In case the stream is not a resource
      */
     public function setInputStream($stream)
     {
         if (!is_resource($stream)) {
-            throw new \InvalidArgumentException('Input stream must be a valid resource.');
+            throw new InvalidArgumentException('Input stream must be a valid resource.');
         }
 
         $this->inputStream = $stream;
@@ -132,11 +134,7 @@ public function doAsk(OutputInterface $output, Question $question)
             }
 
             if (false === $ret) {
-                $ret = fgets($inputStream, 4096);
-                if (false === $ret) {
-                    throw new \RuntimeException('Aborted');
-                }
-                $ret = trim($ret);
+                $ret = $this->readFromInput($inputStream);
             }
         } else {
             $ret = trim($this->autocomplete($output, $question, $inputStream));
@@ -319,7 +317,7 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
      *
      * @return string The answer
      *
-     * @throws \RuntimeException In case the fallback is deactivated and the response cannot be hidden
+     * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden
      */
     private function getHiddenResponse(OutputInterface $output, $inputStream)
     {
@@ -351,7 +349,7 @@ private function getHiddenResponse(OutputInterface $output, $inputStream)
             shell_exec(sprintf('stty %s', $sttyMode));
 
             if (false === $value) {
-                throw new \RuntimeException('Aborted');
+                throw new RuntimeException('Aborted');
             }
 
             $value = trim($value);
@@ -369,7 +367,7 @@ private function getHiddenResponse(OutputInterface $output, $inputStream)
             return $value;
         }
 
-        throw new \RuntimeException('Unable to hide the response.');
+        throw new RuntimeException('Unable to hide the response.');
     }
 
     /**
@@ -429,6 +427,30 @@ private function getShell()
     }
 
     /**
+     * Reads user input.
+     *
+     * @param resource $stream The input stream
+     *
+     * @return string User input
+     *
+     * @throws RuntimeException
+     */
+    private function readFromInput($stream)
+    {
+        if (STDIN === $stream && function_exists('readline')) {
+            $ret = readline();
+        } else {
+            $ret = fgets($stream, 4096);
+        }
+
+        if (false === $ret) {
+            throw new RuntimeException('Aborted');
+        }
+
+        return trim($ret);
+    }
+
+    /**
      * Returns whether Stty is available or not.
      *
      * @return bool
diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
index 77130f9..487f062 100644
--- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
+++ b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\Console\Helper;
 
+use Symfony\Component\Console\Exception\LogicException;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Question\ChoiceQuestion;
@@ -38,7 +39,7 @@ public function ask(InputInterface $input, OutputInterface $output, Question $qu
 
             // make required
             if (!is_array($value) && !is_bool($value) && 0 === strlen($value)) {
-                throw new \Exception('A value is required.');
+                throw new LogicException('A value is required.');
             }
 
             return $value;
diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php
index 6f5fbd0..db41f09 100644
--- a/vendor/symfony/console/Helper/Table.php
+++ b/vendor/symfony/console/Helper/Table.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\Console\Helper;
 
 use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
 
 /**
  * Provides helpers to display a table.
@@ -19,6 +20,7 @@
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Саша Стаменковић <umpirsky@gmail.com>
  * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ * @author Max Grigorian <maxakawizard@gmail.com>
  */
 class Table
 {
@@ -60,6 +62,11 @@ class Table
      */
     private $style;
 
+    /**
+     * @var array
+     */
+    private $columnStyles = array();
+
     private static $styles;
 
     public function __construct(OutputInterface $output)
@@ -102,7 +109,7 @@ public static function getStyleDefinition($name)
         }
 
         if (!self::$styles[$name]) {
-            throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
+            throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
         }
 
         return self::$styles[$name];
@@ -122,7 +129,7 @@ public function setStyle($name)
         } elseif (isset(self::$styles[$name])) {
             $this->style = self::$styles[$name];
         } else {
-            throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
+            throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
         }
 
         return $this;
@@ -138,6 +145,47 @@ public function getStyle()
         return $this->style;
     }
 
+    /**
+     * Sets table column style.
+     *
+     * @param int               $columnIndex Column index
+     * @param TableStyle|string $name        The style name or a TableStyle instance
+     *
+     * @return Table
+     */
+    public function setColumnStyle($columnIndex, $name)
+    {
+        $columnIndex = intval($columnIndex);
+
+        if ($name instanceof TableStyle) {
+            $this->columnStyles[$columnIndex] = $name;
+        } elseif (isset(self::$styles[$name])) {
+            $this->columnStyles[$columnIndex] = self::$styles[$name];
+        } else {
+            throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
+        }
+
+        return $this;
+    }
+
+    /**
+     * Gets the current style for a column.
+     *
+     * If style was not set, it returns the global table style.
+     *
+     * @param int $columnIndex Column index
+     *
+     * @return TableStyle
+     */
+    public function getColumnStyle($columnIndex)
+    {
+        if (isset($this->columnStyles[$columnIndex])) {
+            return $this->columnStyles[$columnIndex];
+        }
+
+        return $this->getStyle();
+    }
+
     public function setHeaders(array $headers)
     {
         $headers = array_values($headers);
@@ -175,7 +223,7 @@ public function addRow($row)
         }
 
         if (!is_array($row)) {
-            throw new \InvalidArgumentException('A row must be an array or a TableSeparator instance.');
+            throw new InvalidArgumentException('A row must be an array or a TableSeparator instance.');
         }
 
         $this->rows[] = array_values($row);
@@ -205,24 +253,26 @@ public function setRow($column, array $row)
     public function render()
     {
         $this->calculateNumberOfColumns();
-        $this->rows = $this->buildTableRows($this->rows);
-        $this->headers = $this->buildTableRows($this->headers);
+        $rows = $this->buildTableRows($this->rows);
+        $headers = $this->buildTableRows($this->headers);
+
+        $this->calculateColumnsWidth(array_merge($headers, $rows));
 
         $this->renderRowSeparator();
-        if (!empty($this->headers)) {
-            foreach ($this->headers as $header) {
+        if (!empty($headers)) {
+            foreach ($headers as $header) {
                 $this->renderRow($header, $this->style->getCellHeaderFormat());
                 $this->renderRowSeparator();
             }
         }
-        foreach ($this->rows as $row) {
+        foreach ($rows as $row) {
             if ($row instanceof TableSeparator) {
                 $this->renderRowSeparator();
             } else {
                 $this->renderRow($row, $this->style->getCellRowFormat());
             }
         }
-        if (!empty($this->rows)) {
+        if (!empty($rows)) {
             $this->renderRowSeparator();
         }
 
@@ -246,7 +296,7 @@ private function renderRowSeparator()
 
         $markup = $this->style->getCrossingChar();
         for ($column = 0; $column < $count; ++$column) {
-            $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->getColumnWidth($column)).$this->style->getCrossingChar();
+            $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->columnWidths[$column]).$this->style->getCrossingChar();
         }
 
         $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup));
@@ -292,25 +342,27 @@ private function renderRow(array $row, $cellFormat)
     private function renderCell(array $row, $column, $cellFormat)
     {
         $cell = isset($row[$column]) ? $row[$column] : '';
-        $width = $this->getColumnWidth($column);
+        $width = $this->columnWidths[$column];
         if ($cell instanceof TableCell && $cell->getColspan() > 1) {
             // add the width of the following columns(numbers of colspan).
             foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
-                $width += $this->getColumnSeparatorWidth() + $this->getColumnWidth($nextColumn);
+                $width += $this->getColumnSeparatorWidth() + $this->columnWidths[$nextColumn];
             }
         }
 
         // str_pad won't work properly with multi-byte strings, we need to fix the padding
-        if (function_exists('mb_strwidth') && false !== $encoding = mb_detect_encoding($cell)) {
+        if (false !== $encoding = mb_detect_encoding($cell, null, true)) {
             $width += strlen($cell) - mb_strwidth($cell, $encoding);
         }
 
+        $style = $this->getColumnStyle($column);
+
         if ($cell instanceof TableSeparator) {
-            $this->output->write(sprintf($this->style->getBorderFormat(), str_repeat($this->style->getHorizontalBorderChar(), $width)));
+            $this->output->write(sprintf($style->getBorderFormat(), str_repeat($style->getHorizontalBorderChar(), $width)));
         } else {
             $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
-            $content = sprintf($this->style->getCellRowContentFormat(), $cell);
-            $this->output->write(sprintf($cellFormat, str_pad($content, $width, $this->style->getPaddingChar(), $this->style->getPadType())));
+            $content = sprintf($style->getCellRowContentFormat(), $cell);
+            $this->output->write(sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $style->getPadType())));
         }
     }
 
@@ -509,21 +561,20 @@ private function getRowColumns($row)
      *
      * @return int
      */
-    private function getColumnWidth($column)
+    private function calculateColumnsWidth($rows)
     {
-        if (isset($this->columnWidths[$column])) {
-            return $this->columnWidths[$column];
-        }
+        for ($column = 0; $column < $this->numberOfColumns; ++$column) {
+            $lengths = array();
+            foreach ($rows as $row) {
+                if ($row instanceof TableSeparator) {
+                    continue;
+                }
 
-        foreach (array_merge($this->headers, $this->rows) as $row) {
-            if ($row instanceof TableSeparator) {
-                continue;
+                $lengths[] = $this->getCellWidth($row, $column);
             }
 
-            $lengths[] = $this->getCellWidth($row, $column);
+            $this->columnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2;
         }
-
-        return $this->columnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2;
     }
 
     /**
diff --git a/vendor/symfony/console/Helper/TableCell.php b/vendor/symfony/console/Helper/TableCell.php
index aa0d318..69442d4 100644
--- a/vendor/symfony/console/Helper/TableCell.php
+++ b/vendor/symfony/console/Helper/TableCell.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Helper;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
  */
@@ -39,7 +41,7 @@ public function __construct($value = '', array $options = array())
 
         // check option names
         if ($diff = array_diff(array_keys($options), array_keys($this->options))) {
-            throw new \InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff)));
+            throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff)));
         }
 
         $this->options = array_merge($this->options, $options);
diff --git a/vendor/symfony/console/Helper/TableHelper.php b/vendor/symfony/console/Helper/TableHelper.php
index 2953522..ebd6785 100644
--- a/vendor/symfony/console/Helper/TableHelper.php
+++ b/vendor/symfony/console/Helper/TableHelper.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\NullOutput;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
 
 /**
  * Provides helpers to display table output.
@@ -50,7 +51,7 @@ public function __construct($triggerDeprecationError = true)
      *
      * @return TableHelper
      *
-     * @throws \InvalidArgumentException when the table layout is not known
+     * @throws InvalidArgumentException when the table layout is not known
      */
     public function setLayout($layout)
     {
@@ -68,7 +69,7 @@ public function setLayout($layout)
                 break;
 
             default:
-                throw new \InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
+                throw new InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
         };
 
         return $this;
diff --git a/vendor/symfony/console/Helper/TableStyle.php b/vendor/symfony/console/Helper/TableStyle.php
index f0f46c7..d7e28ff 100644
--- a/vendor/symfony/console/Helper/TableStyle.php
+++ b/vendor/symfony/console/Helper/TableStyle.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Helper;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
+
 /**
  * Defines the styles for a Table.
  *
@@ -39,7 +42,7 @@ class TableStyle
     public function setPaddingChar($paddingChar)
     {
         if (!$paddingChar) {
-            throw new \LogicException('The padding char must not be empty');
+            throw new LogicException('The padding char must not be empty');
         }
 
         $this->paddingChar = $paddingChar;
@@ -235,7 +238,7 @@ public function getBorderFormat()
     public function setPadType($padType)
     {
         if (!in_array($padType, array(STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH), true)) {
-            throw new \InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).');
+            throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).');
         }
 
         $this->padType = $padType;
diff --git a/vendor/symfony/console/Input/ArgvInput.php b/vendor/symfony/console/Input/ArgvInput.php
index 43b28d5..02d4cdb 100644
--- a/vendor/symfony/console/Input/ArgvInput.php
+++ b/vendor/symfony/console/Input/ArgvInput.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\RuntimeException;
+
 /**
  * ArgvInput represents an input coming from the CLI arguments.
  *
@@ -114,14 +116,14 @@ private function parseShortOption($token)
      *
      * @param string $name The current token
      *
-     * @throws \RuntimeException When option given doesn't exist
+     * @throws RuntimeException When option given doesn't exist
      */
     private function parseShortOptionSet($name)
     {
         $len = strlen($name);
         for ($i = 0; $i < $len; ++$i) {
             if (!$this->definition->hasShortcut($name[$i])) {
-                throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $name[$i]));
+                throw new RuntimeException(sprintf('The "-%s" option does not exist.', $name[$i]));
             }
 
             $option = $this->definition->getOptionForShortcut($name[$i]);
@@ -156,7 +158,7 @@ private function parseLongOption($token)
      *
      * @param string $token The current token
      *
-     * @throws \RuntimeException When too many arguments are given
+     * @throws RuntimeException When too many arguments are given
      */
     private function parseArgument($token)
     {
@@ -174,7 +176,7 @@ private function parseArgument($token)
 
         // unexpected argument
         } else {
-            throw new \RuntimeException('Too many arguments.');
+            throw new RuntimeException('Too many arguments.');
         }
     }
 
@@ -184,12 +186,12 @@ private function parseArgument($token)
      * @param string $shortcut The short option key
      * @param mixed  $value    The value for the option
      *
-     * @throws \RuntimeException When option given doesn't exist
+     * @throws RuntimeException When option given doesn't exist
      */
     private function addShortOption($shortcut, $value)
     {
         if (!$this->definition->hasShortcut($shortcut)) {
-            throw new \RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut));
+            throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut));
         }
 
         $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value);
@@ -201,12 +203,12 @@ private function addShortOption($shortcut, $value)
      * @param string $name  The long option key
      * @param mixed  $value The value for the option
      *
-     * @throws \RuntimeException When option given doesn't exist
+     * @throws RuntimeException When option given doesn't exist
      */
     private function addLongOption($name, $value)
     {
         if (!$this->definition->hasOption($name)) {
-            throw new \RuntimeException(sprintf('The "--%s" option does not exist.', $name));
+            throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name));
         }
 
         $option = $this->definition->getOption($name);
@@ -217,7 +219,7 @@ private function addLongOption($name, $value)
         }
 
         if (null !== $value && !$option->acceptValue()) {
-            throw new \RuntimeException(sprintf('The "--%s" option does not accept a value.', $name));
+            throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name));
         }
 
         if (null === $value && $option->acceptValue() && count($this->parsed)) {
@@ -235,7 +237,7 @@ private function addLongOption($name, $value)
 
         if (null === $value) {
             if ($option->isValueRequired()) {
-                throw new \RuntimeException(sprintf('The "--%s" option requires a value.', $name));
+                throw new RuntimeException(sprintf('The "--%s" option requires a value.', $name));
             }
 
             if (!$option->isArray()) {
diff --git a/vendor/symfony/console/Input/ArrayInput.php b/vendor/symfony/console/Input/ArrayInput.php
index 99c9788..8cedbb3 100644
--- a/vendor/symfony/console/Input/ArrayInput.php
+++ b/vendor/symfony/console/Input/ArrayInput.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\InvalidOptionException;
+
 /**
  * ArrayInput represents an input provided as an array.
  *
@@ -149,12 +152,12 @@ protected function parse()
      * @param string $shortcut The short option key
      * @param mixed  $value    The value for the option
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
+     * @throws InvalidOptionException When option given doesn't exist
      */
     private function addShortOption($shortcut, $value)
     {
         if (!$this->definition->hasShortcut($shortcut)) {
-            throw new \InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut));
+            throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut));
         }
 
         $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value);
@@ -166,20 +169,20 @@ private function addShortOption($shortcut, $value)
      * @param string $name  The long option key
      * @param mixed  $value The value for the option
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
-     * @throws \InvalidArgumentException When a required value is missing
+     * @throws InvalidOptionException When option given doesn't exist
+     * @throws InvalidOptionException When a required value is missing
      */
     private function addLongOption($name, $value)
     {
         if (!$this->definition->hasOption($name)) {
-            throw new \InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name));
+            throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name));
         }
 
         $option = $this->definition->getOption($name);
 
         if (null === $value) {
             if ($option->isValueRequired()) {
-                throw new \InvalidArgumentException(sprintf('The "--%s" option requires a value.', $name));
+                throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name));
             }
 
             $value = $option->isValueOptional() ? $option->getDefault() : true;
@@ -194,12 +197,12 @@ private function addLongOption($name, $value)
      * @param string $name  The argument name
      * @param mixed  $value The value for the argument
      *
-     * @throws \InvalidArgumentException When argument given doesn't exist
+     * @throws InvalidArgumentException When argument given doesn't exist
      */
     private function addArgument($name, $value)
     {
         if (!$this->definition->hasArgument($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
         }
 
         $this->arguments[$name] = $value;
diff --git a/vendor/symfony/console/Input/Input.php b/vendor/symfony/console/Input/Input.php
index e26fcc1..85499fc 100644
--- a/vendor/symfony/console/Input/Input.php
+++ b/vendor/symfony/console/Input/Input.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\RuntimeException;
+
 /**
  * Input is the base class for all concrete Input classes.
  *
@@ -69,7 +72,7 @@ public function bind(InputDefinition $definition)
     /**
      * Validates the input.
      *
-     * @throws \RuntimeException When not enough arguments are given
+     * @throws RuntimeException When not enough arguments are given
      */
     public function validate()
     {
@@ -81,7 +84,7 @@ public function validate()
         });
 
         if (count($missingArguments) > 0) {
-            throw new \RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments)));
+            throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments)));
         }
     }
 
@@ -122,12 +125,12 @@ public function getArguments()
      *
      * @return mixed The argument value
      *
-     * @throws \InvalidArgumentException When argument given doesn't exist
+     * @throws InvalidArgumentException When argument given doesn't exist
      */
     public function getArgument($name)
     {
         if (!$this->definition->hasArgument($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
         }
 
         return isset($this->arguments[$name]) ? $this->arguments[$name] : $this->definition->getArgument($name)->getDefault();
@@ -139,12 +142,12 @@ public function getArgument($name)
      * @param string $name  The argument name
      * @param string $value The argument value
      *
-     * @throws \InvalidArgumentException When argument given doesn't exist
+     * @throws InvalidArgumentException When argument given doesn't exist
      */
     public function setArgument($name, $value)
     {
         if (!$this->definition->hasArgument($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
         }
 
         $this->arguments[$name] = $value;
@@ -179,12 +182,12 @@ public function getOptions()
      *
      * @return mixed The option value
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
+     * @throws InvalidArgumentException When option given doesn't exist
      */
     public function getOption($name)
     {
         if (!$this->definition->hasOption($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
         }
 
         return isset($this->options[$name]) ? $this->options[$name] : $this->definition->getOption($name)->getDefault();
@@ -196,12 +199,12 @@ public function getOption($name)
      * @param string      $name  The option name
      * @param string|bool $value The option value
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
+     * @throws InvalidArgumentException When option given doesn't exist
      */
     public function setOption($name, $value)
     {
         if (!$this->definition->hasOption($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name));
         }
 
         $this->options[$name] = $value;
diff --git a/vendor/symfony/console/Input/InputArgument.php b/vendor/symfony/console/Input/InputArgument.php
index 69edecb..048ee4f 100644
--- a/vendor/symfony/console/Input/InputArgument.php
+++ b/vendor/symfony/console/Input/InputArgument.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
+
 /**
  * Represents a command line argument.
  *
@@ -35,14 +38,14 @@ class InputArgument
      * @param string $description A description text
      * @param mixed  $default     The default value (for self::OPTIONAL mode only)
      *
-     * @throws \InvalidArgumentException When argument mode is not valid
+     * @throws InvalidArgumentException When argument mode is not valid
      */
     public function __construct($name, $mode = null, $description = '', $default = null)
     {
         if (null === $mode) {
             $mode = self::OPTIONAL;
         } elseif (!is_int($mode) || $mode > 7 || $mode < 1) {
-            throw new \InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode));
+            throw new InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode));
         }
 
         $this->name = $name;
@@ -87,19 +90,19 @@ public function isArray()
      *
      * @param mixed $default The default value
      *
-     * @throws \LogicException When incorrect default value is given
+     * @throws LogicException When incorrect default value is given
      */
     public function setDefault($default = null)
     {
         if (self::REQUIRED === $this->mode && null !== $default) {
-            throw new \LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.');
+            throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.');
         }
 
         if ($this->isArray()) {
             if (null === $default) {
                 $default = array();
             } elseif (!is_array($default)) {
-                throw new \LogicException('A default value for an array argument must be an array.');
+                throw new LogicException('A default value for an array argument must be an array.');
             }
         }
 
diff --git a/vendor/symfony/console/Input/InputDefinition.php b/vendor/symfony/console/Input/InputDefinition.php
index 809baeb..bd64163 100644
--- a/vendor/symfony/console/Input/InputDefinition.php
+++ b/vendor/symfony/console/Input/InputDefinition.php
@@ -14,6 +14,8 @@
 use Symfony\Component\Console\Descriptor\TextDescriptor;
 use Symfony\Component\Console\Descriptor\XmlDescriptor;
 use Symfony\Component\Console\Output\BufferedOutput;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
 
 /**
  * A InputDefinition represents a set of valid command line arguments and options.
@@ -100,20 +102,20 @@ public function addArguments($arguments = array())
      *
      * @param InputArgument $argument An InputArgument object
      *
-     * @throws \LogicException When incorrect argument is given
+     * @throws LogicException When incorrect argument is given
      */
     public function addArgument(InputArgument $argument)
     {
         if (isset($this->arguments[$argument->getName()])) {
-            throw new \LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName()));
+            throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName()));
         }
 
         if ($this->hasAnArrayArgument) {
-            throw new \LogicException('Cannot add an argument after an array argument.');
+            throw new LogicException('Cannot add an argument after an array argument.');
         }
 
         if ($argument->isRequired() && $this->hasOptional) {
-            throw new \LogicException('Cannot add a required argument after an optional one.');
+            throw new LogicException('Cannot add a required argument after an optional one.');
         }
 
         if ($argument->isArray()) {
@@ -136,12 +138,12 @@ public function addArgument(InputArgument $argument)
      *
      * @return InputArgument An InputArgument object
      *
-     * @throws \InvalidArgumentException When argument given doesn't exist
+     * @throws InvalidArgumentException When argument given doesn't exist
      */
     public function getArgument($name)
     {
         if (!$this->hasArgument($name)) {
-            throw new \InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name));
         }
 
         $arguments = is_int($name) ? array_values($this->arguments) : $this->arguments;
@@ -237,18 +239,18 @@ public function addOptions($options = array())
      *
      * @param InputOption $option An InputOption object
      *
-     * @throws \LogicException When option given already exist
+     * @throws LogicException When option given already exist
      */
     public function addOption(InputOption $option)
     {
         if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) {
-            throw new \LogicException(sprintf('An option named "%s" already exists.', $option->getName()));
+            throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName()));
         }
 
         if ($option->getShortcut()) {
             foreach (explode('|', $option->getShortcut()) as $shortcut) {
                 if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) {
-                    throw new \LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut));
+                    throw new LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut));
                 }
             }
         }
@@ -268,12 +270,12 @@ public function addOption(InputOption $option)
      *
      * @return InputOption A InputOption object
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
+     * @throws InvalidArgumentException When option given doesn't exist
      */
     public function getOption($name)
     {
         if (!$this->hasOption($name)) {
-            throw new \InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name));
+            throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name));
         }
 
         return $this->options[$name];
@@ -347,12 +349,12 @@ public function getOptionDefaults()
      *
      * @return string The InputOption name
      *
-     * @throws \InvalidArgumentException When option given does not exist
+     * @throws InvalidArgumentException When option given does not exist
      */
     private function shortcutToName($shortcut)
     {
         if (!isset($this->shortcuts[$shortcut])) {
-            throw new \InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut));
+            throw new InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut));
         }
 
         return $this->shortcuts[$shortcut];
diff --git a/vendor/symfony/console/Input/InputInterface.php b/vendor/symfony/console/Input/InputInterface.php
index 6ef2f26..f83b885 100644
--- a/vendor/symfony/console/Input/InputInterface.php
+++ b/vendor/symfony/console/Input/InputInterface.php
@@ -88,7 +88,7 @@ public function getArgument($name);
      * @param string $name  The argument name
      * @param string $value The argument value
      *
-     * @throws \InvalidArgumentException When argument given doesn't exist
+     * @throws InvalidArgumentException When argument given doesn't exist
      */
     public function setArgument($name, $value);
 
@@ -123,7 +123,7 @@ public function getOption($name);
      * @param string      $name  The option name
      * @param string|bool $value The option value
      *
-     * @throws \InvalidArgumentException When option given doesn't exist
+     * @throws InvalidArgumentException When option given doesn't exist
      */
     public function setOption($name, $value);
 
diff --git a/vendor/symfony/console/Input/InputOption.php b/vendor/symfony/console/Input/InputOption.php
index 167f199..3a752cb 100644
--- a/vendor/symfony/console/Input/InputOption.php
+++ b/vendor/symfony/console/Input/InputOption.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
+
 /**
  * Represents a command line option.
  *
@@ -38,7 +41,7 @@ class InputOption
      * @param string       $description A description text
      * @param mixed        $default     The default value (must be null for self::VALUE_REQUIRED or self::VALUE_NONE)
      *
-     * @throws \InvalidArgumentException If option mode is invalid or incompatible
+     * @throws InvalidArgumentException If option mode is invalid or incompatible
      */
     public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null)
     {
@@ -47,7 +50,7 @@ public function __construct($name, $shortcut = null, $mode = null, $description
         }
 
         if (empty($name)) {
-            throw new \InvalidArgumentException('An option name cannot be empty.');
+            throw new InvalidArgumentException('An option name cannot be empty.');
         }
 
         if (empty($shortcut)) {
@@ -63,14 +66,14 @@ public function __construct($name, $shortcut = null, $mode = null, $description
             $shortcut = implode('|', $shortcuts);
 
             if (empty($shortcut)) {
-                throw new \InvalidArgumentException('An option shortcut cannot be empty.');
+                throw new InvalidArgumentException('An option shortcut cannot be empty.');
             }
         }
 
         if (null === $mode) {
             $mode = self::VALUE_NONE;
         } elseif (!is_int($mode) || $mode > 15 || $mode < 1) {
-            throw new \InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode));
+            throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode));
         }
 
         $this->name = $name;
@@ -79,7 +82,7 @@ public function __construct($name, $shortcut = null, $mode = null, $description
         $this->description = $description;
 
         if ($this->isArray() && !$this->acceptValue()) {
-            throw new \InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.');
+            throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.');
         }
 
         $this->setDefault($default);
@@ -150,19 +153,19 @@ public function isArray()
      *
      * @param mixed $default The default value
      *
-     * @throws \LogicException When incorrect default value is given
+     * @throws LogicException When incorrect default value is given
      */
     public function setDefault($default = null)
     {
         if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) {
-            throw new \LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.');
+            throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.');
         }
 
         if ($this->isArray()) {
             if (null === $default) {
                 $default = array();
             } elseif (!is_array($default)) {
-                throw new \LogicException('A default value for an array option must be an array.');
+                throw new LogicException('A default value for an array option must be an array.');
             }
         }
 
diff --git a/vendor/symfony/console/Input/StringInput.php b/vendor/symfony/console/Input/StringInput.php
index c518d5c..a40ddba 100644
--- a/vendor/symfony/console/Input/StringInput.php
+++ b/vendor/symfony/console/Input/StringInput.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Input;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * StringInput represents an input provided as a string.
  *
@@ -55,7 +57,7 @@ public function __construct($input, InputDefinition $definition = null)
      *
      * @return array An array of tokens
      *
-     * @throws \InvalidArgumentException When unable to parse input (should never happen)
+     * @throws InvalidArgumentException When unable to parse input (should never happen)
      */
     private function tokenize($input)
     {
@@ -72,7 +74,7 @@ private function tokenize($input)
                 $tokens[] = stripcslashes($match[1]);
             } else {
                 // should never happen
-                throw new \InvalidArgumentException(sprintf('Unable to parse input near "... %s ..."', substr($input, $cursor, 10)));
+                throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ..."', substr($input, $cursor, 10)));
             }
 
             $cursor += strlen($match[0]);
diff --git a/vendor/symfony/console/Output/NullOutput.php b/vendor/symfony/console/Output/NullOutput.php
index a14ae74..682f9a4 100644
--- a/vendor/symfony/console/Output/NullOutput.php
+++ b/vendor/symfony/console/Output/NullOutput.php
@@ -96,7 +96,7 @@ public function isDebug()
     /**
      * {@inheritdoc}
      */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
+    public function writeln($messages, $options = self::OUTPUT_NORMAL)
     {
         // do nothing
     }
@@ -104,7 +104,7 @@ public function writeln($messages, $type = self::OUTPUT_NORMAL)
     /**
      * {@inheritdoc}
      */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
+    public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL)
     {
         // do nothing
     }
diff --git a/vendor/symfony/console/Output/Output.php b/vendor/symfony/console/Output/Output.php
index 306dccf..4476ffb 100644
--- a/vendor/symfony/console/Output/Output.php
+++ b/vendor/symfony/console/Output/Output.php
@@ -117,22 +117,28 @@ public function isDebug()
     /**
      * {@inheritdoc}
      */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL)
+    public function writeln($messages, $options = self::OUTPUT_NORMAL)
     {
-        $this->write($messages, true, $type);
+        $this->write($messages, true, $options);
     }
 
     /**
      * {@inheritdoc}
      */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
+    public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL)
     {
-        if (self::VERBOSITY_QUIET === $this->verbosity) {
+        $messages = (array) $messages;
+
+        $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN;
+        $type = $types & $options ?: self::OUTPUT_NORMAL;
+
+        $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG;
+        $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL;
+
+        if ($verbosity > $this->getVerbosity()) {
             return;
         }
 
-        $messages = (array) $messages;
-
         foreach ($messages as $message) {
             switch ($type) {
                 case OutputInterface::OUTPUT_NORMAL:
@@ -143,8 +149,6 @@ public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL)
                 case OutputInterface::OUTPUT_PLAIN:
                     $message = strip_tags($this->formatter->format($message));
                     break;
-                default:
-                    throw new \InvalidArgumentException(sprintf('Unknown output type given (%s)', $type));
             }
 
             $this->doWrite($message, $newline);
diff --git a/vendor/symfony/console/Output/OutputInterface.php b/vendor/symfony/console/Output/OutputInterface.php
index 9a956e2..9a8290b 100644
--- a/vendor/symfony/console/Output/OutputInterface.php
+++ b/vendor/symfony/console/Output/OutputInterface.php
@@ -20,36 +20,32 @@
  */
 interface OutputInterface
 {
-    const VERBOSITY_QUIET = 0;
-    const VERBOSITY_NORMAL = 1;
-    const VERBOSITY_VERBOSE = 2;
-    const VERBOSITY_VERY_VERBOSE = 3;
-    const VERBOSITY_DEBUG = 4;
+    const VERBOSITY_QUIET = 16;
+    const VERBOSITY_NORMAL = 32;
+    const VERBOSITY_VERBOSE = 64;
+    const VERBOSITY_VERY_VERBOSE = 128;
+    const VERBOSITY_DEBUG = 256;
 
-    const OUTPUT_NORMAL = 0;
-    const OUTPUT_RAW = 1;
-    const OUTPUT_PLAIN = 2;
+    const OUTPUT_NORMAL = 1;
+    const OUTPUT_RAW = 2;
+    const OUTPUT_PLAIN = 4;
 
     /**
      * Writes a message to the output.
      *
      * @param string|array $messages The message as an array of lines or a single string
      * @param bool         $newline  Whether to add a newline
-     * @param int          $type     The type of output (one of the OUTPUT constants)
-     *
-     * @throws \InvalidArgumentException When unknown output type is given
+     * @param int          $options  A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
      */
-    public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL);
+    public function write($messages, $newline = false, $options = 0);
 
     /**
      * Writes a message to the output and adds a newline at the end.
      *
-     * @param string|array $messages The message as an array of lines or a single string
-     * @param int          $type     The type of output (one of the OUTPUT constants)
-     *
-     * @throws \InvalidArgumentException When unknown output type is given
+     * @param string|array $messages The message as an array of lines of a single string
+     * @param int          $options  A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL
      */
-    public function writeln($messages, $type = self::OUTPUT_NORMAL);
+    public function writeln($messages, $options = 0);
 
     /**
      * Sets the verbosity of the output.
diff --git a/vendor/symfony/console/Output/StreamOutput.php b/vendor/symfony/console/Output/StreamOutput.php
index a1facda..62d04c0 100644
--- a/vendor/symfony/console/Output/StreamOutput.php
+++ b/vendor/symfony/console/Output/StreamOutput.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Output;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\RuntimeException;
 use Symfony\Component\Console\Formatter\OutputFormatterInterface;
 
 /**
@@ -38,12 +40,12 @@ class StreamOutput extends Output
      * @param bool|null                     $decorated Whether to decorate messages (null for auto-guessing)
      * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter)
      *
-     * @throws \InvalidArgumentException When first argument is not a real stream
+     * @throws InvalidArgumentException When first argument is not a real stream
      */
     public function __construct($stream, $verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null)
     {
         if (!is_resource($stream) || 'stream' !== get_resource_type($stream)) {
-            throw new \InvalidArgumentException('The StreamOutput class needs a stream as its first argument.');
+            throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.');
         }
 
         $this->stream = $stream;
@@ -72,7 +74,7 @@ protected function doWrite($message, $newline)
     {
         if (false === @fwrite($this->stream, $message.($newline ? PHP_EOL : ''))) {
             // should never happen
-            throw new \RuntimeException('Unable to write output.');
+            throw new RuntimeException('Unable to write output.');
         }
 
         fflush($this->stream);
diff --git a/vendor/symfony/console/Question/ChoiceQuestion.php b/vendor/symfony/console/Question/ChoiceQuestion.php
index a36c739..2c40638 100644
--- a/vendor/symfony/console/Question/ChoiceQuestion.php
+++ b/vendor/symfony/console/Question/ChoiceQuestion.php
@@ -11,6 +11,8 @@
 
 namespace Symfony\Component\Console\Question;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+
 /**
  * Represents a choice question.
  *
@@ -126,7 +128,7 @@ private function getDefaultValidator()
             if ($multiselect) {
                 // Check for a separated comma values
                 if (!preg_match('/^[a-zA-Z0-9_-]+(?:,[a-zA-Z0-9_-]+)*$/', $selectedChoices, $matches)) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $selected));
+                    throw new InvalidArgumentException(sprintf($errorMessage, $selected));
                 }
                 $selectedChoices = explode(',', $selectedChoices);
             } else {
@@ -143,7 +145,7 @@ private function getDefaultValidator()
                 }
 
                 if (count($results) > 1) {
-                    throw new \InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of %s.', implode(' or ', $results)));
+                    throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of %s.', implode(' or ', $results)));
                 }
 
                 $result = array_search($value, $choices);
@@ -159,7 +161,7 @@ private function getDefaultValidator()
                 }
 
                 if (false === $result) {
-                    throw new \InvalidArgumentException(sprintf($errorMessage, $value));
+                    throw new InvalidArgumentException(sprintf($errorMessage, $value));
                 }
 
                 $multiselectChoices[] = (string) $result;
diff --git a/vendor/symfony/console/Question/Question.php b/vendor/symfony/console/Question/Question.php
index ffe9417..6effa42 100644
--- a/vendor/symfony/console/Question/Question.php
+++ b/vendor/symfony/console/Question/Question.php
@@ -11,6 +11,9 @@
 
 namespace Symfony\Component\Console\Question;
 
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Exception\LogicException;
+
 /**
  * Represents a Question.
  *
@@ -76,12 +79,12 @@ public function isHidden()
      *
      * @return Question The current instance
      *
-     * @throws \LogicException In case the autocompleter is also used
+     * @throws LogicException In case the autocompleter is also used
      */
     public function setHidden($hidden)
     {
         if ($this->autocompleterValues) {
-            throw new \LogicException('A hidden question cannot use the autocompleter.');
+            throw new LogicException('A hidden question cannot use the autocompleter.');
         }
 
         $this->hidden = (bool) $hidden;
@@ -130,8 +133,8 @@ public function getAutocompleterValues()
      *
      * @return Question The current instance
      *
-     * @throws \InvalidArgumentException
-     * @throws \LogicException
+     * @throws InvalidArgumentException
+     * @throws LogicException
      */
     public function setAutocompleterValues($values)
     {
@@ -141,12 +144,12 @@ public function setAutocompleterValues($values)
 
         if (null !== $values && !is_array($values)) {
             if (!$values instanceof \Traversable || $values instanceof \Countable) {
-                throw new \InvalidArgumentException('Autocompleter values can be either an array, `null` or an object implementing both `Countable` and `Traversable` interfaces.');
+                throw new InvalidArgumentException('Autocompleter values can be either an array, `null` or an object implementing both `Countable` and `Traversable` interfaces.');
             }
         }
 
         if ($this->hidden) {
-            throw new \LogicException('A hidden question cannot use the autocompleter.');
+            throw new LogicException('A hidden question cannot use the autocompleter.');
         }
 
         $this->autocompleterValues = $values;
@@ -187,12 +190,12 @@ public function getValidator()
      *
      * @return Question The current instance
      *
-     * @throws \InvalidArgumentException In case the number of attempts is invalid.
+     * @throws InvalidArgumentException In case the number of attempts is invalid.
      */
     public function setMaxAttempts($attempts)
     {
         if (null !== $attempts && $attempts < 1) {
-            throw new \InvalidArgumentException('Maximum number of attempts must be a positive value.');
+            throw new InvalidArgumentException('Maximum number of attempts must be a positive value.');
         }
 
         $this->attempts = $attempts;
diff --git a/vendor/symfony/console/Shell.php b/vendor/symfony/console/Shell.php
index eaaadfd..0f39069 100644
--- a/vendor/symfony/console/Shell.php
+++ b/vendor/symfony/console/Shell.php
@@ -11,6 +11,7 @@
 
 namespace Symfony\Component\Console;
 
+use Symfony\Component\Console\Exception\RuntimeException;
 use Symfony\Component\Console\Input\StringInput;
 use Symfony\Component\Console\Output\ConsoleOutput;
 use Symfony\Component\Process\ProcessBuilder;
@@ -22,6 +23,8 @@
  * Support for history and completion only works with a PHP compiled
  * with readline support (either --with-readline or --with-libedit)
  *
+ * @deprecated since version 2.8, to be removed in 3.0.
+ *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Martin Hasoň <martin.hason@gmail.com>
  */
@@ -43,6 +46,8 @@ class Shell
      */
     public function __construct(Application $application)
     {
+        @trigger_error('The '.__CLASS__.' class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+
         $this->hasReadline = function_exists('readline');
         $this->application = $application;
         $this->history = getenv('HOME').'/.history_'.$application->getName();
@@ -222,7 +227,7 @@ public function setProcessIsolation($processIsolation)
         $this->processIsolation = (bool) $processIsolation;
 
         if ($this->processIsolation && !class_exists('Symfony\\Component\\Process\\Process')) {
-            throw new \RuntimeException('Unable to isolate processes as the Symfony Process Component is not installed.');
+            throw new RuntimeException('Unable to isolate processes as the Symfony Process Component is not installed.');
         }
     }
 }
diff --git a/vendor/symfony/console/Style/SymfonyStyle.php b/vendor/symfony/console/Style/SymfonyStyle.php
index 6e9c64f..c69b0dc 100644
--- a/vendor/symfony/console/Style/SymfonyStyle.php
+++ b/vendor/symfony/console/Style/SymfonyStyle.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\Console\Style;
 
 use Symfony\Component\Console\Application;
+use Symfony\Component\Console\Exception\RuntimeException;
 use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Helper\Helper;
 use Symfony\Component\Console\Helper\ProgressBar;
@@ -109,7 +110,7 @@ public function title($message)
         $this->autoPrependBlock();
         $this->writeln(array(
             sprintf('<comment>%s</>', $message),
-            sprintf('<comment>%s</>', str_repeat('=', strlen($message))),
+            sprintf('<comment>%s</>', str_repeat('=', Helper::strlenWithoutDecoration($this->getFormatter(), $message))),
         ));
         $this->newLine();
     }
@@ -122,7 +123,7 @@ public function section($message)
         $this->autoPrependBlock();
         $this->writeln(array(
             sprintf('<comment>%s</>', $message),
-            sprintf('<comment>%s</>', str_repeat('-', strlen($message))),
+            sprintf('<comment>%s</>', str_repeat('-', Helper::strlenWithoutDecoration($this->getFormatter(), $message))),
         ));
         $this->newLine();
     }
@@ -148,14 +149,22 @@ public function text($message)
     {
         $this->autoPrependText();
 
-        if (!is_array($message)) {
-            $this->writeln(sprintf(' // %s', $message));
-
-            return;
+        $messages = is_array($message) ? array_values($message) : array($message);
+        foreach ($messages as $message) {
+             $this->writeln(sprintf(' %s', $message));
         }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function comment($message)
+    {
+        $this->autoPrependText();
 
-        foreach ($message as $element) {
-            $this->text($element);
+        $messages = is_array($message) ? array_values($message) : array($message);
+        foreach ($messages as $message) {
+             $this->writeln(sprintf(' // %s', $message));
         }
     }
 
@@ -294,7 +303,7 @@ public function createProgressBar($max = 0)
     {
         $progressBar = parent::createProgressBar($max);
 
-        if ('\\' === DIRECTORY_SEPARATOR) {
+        if ('\\' !== DIRECTORY_SEPARATOR) {
             $progressBar->setEmptyBarCharacter('░'); // light shade character \u2591
             $progressBar->setProgressCharacter('');
             $progressBar->setBarCharacter('▓'); // dark shade character \u2593
@@ -361,7 +370,7 @@ public function newLine($count = 1)
     private function getProgressBar()
     {
         if (!$this->progressBar) {
-            throw new \RuntimeException('The ProgressBar is not started.');
+            throw new RuntimeException('The ProgressBar is not started.');
         }
 
         return $this->progressBar;
diff --git a/vendor/symfony/console/composer.json b/vendor/symfony/console/composer.json
index 38903ab..ab24704 100644
--- a/vendor/symfony/console/composer.json
+++ b/vendor/symfony/console/composer.json
@@ -16,11 +16,12 @@
         }
     ],
     "require": {
-        "php": ">=5.3.9"
+        "php": ">=5.3.9",
+        "symfony/polyfill-mbstring": "~1.0"
     },
     "require-dev": {
-        "symfony/event-dispatcher": "~2.1",
-        "symfony/process": "~2.1",
+        "symfony/event-dispatcher": "~2.1|~3.0.0",
+        "symfony/process": "~2.1|~3.0.0",
         "psr/log": "~1.0"
     },
     "suggest": {
@@ -29,12 +30,15 @@
         "psr/log": "For using the console logger"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Console\\": "" }
+        "psr-4": { "Symfony\\Component\\Console\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/css-selector/composer.json b/vendor/symfony/css-selector/composer.json
index 99eb4da..8836257 100644
--- a/vendor/symfony/css-selector/composer.json
+++ b/vendor/symfony/css-selector/composer.json
@@ -23,7 +23,10 @@
         "php": ">=5.3.9"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\CssSelector\\": "" }
+        "psr-4": { "Symfony\\Component\\CssSelector\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
diff --git a/vendor/symfony/debug/composer.json b/vendor/symfony/debug/composer.json
index c1b128a..51b0df6 100644
--- a/vendor/symfony/debug/composer.json
+++ b/vendor/symfony/debug/composer.json
@@ -27,7 +27,10 @@
         "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Debug\\": "" }
+        "psr-4": { "Symfony\\Component\\Debug\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
diff --git a/vendor/symfony/dependency-injection/CHANGELOG.md b/vendor/symfony/dependency-injection/CHANGELOG.md
index 4272943..da905c1 100644
--- a/vendor/symfony/dependency-injection/CHANGELOG.md
+++ b/vendor/symfony/dependency-injection/CHANGELOG.md
@@ -1,6 +1,17 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * deprecated the abstract ContainerAware class in favor of ContainerAwareTrait
+ * deprecated IntrospectableContainerInterface, to be merged with ContainerInterface in 3.0
+ * allowed specifying a directory to recursively load all configuration files it contains
+ * deprecated the concept of scopes
+ * added `Definition::setShared()` and `Definition::isShared()`
+ * added ResettableContainerInterface to be able to reset the container to release memory on shutdown
+ * added a way to define the priority of service decoration
+
 2.7.0
 -----
 
diff --git a/vendor/symfony/dependency-injection/Compiler/AutowirePass.php b/vendor/symfony/dependency-injection/Compiler/AutowirePass.php
new file mode 100644
index 0000000..ec7880b
--- /dev/null
+++ b/vendor/symfony/dependency-injection/Compiler/AutowirePass.php
@@ -0,0 +1,271 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection\Compiler;
+
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\Exception\RuntimeException;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Guesses constructor arguments of services definitions and try to instantiate services if necessary.
+ *
+ * @author Kévin Dunglas <dunglas@gmail.com>
+ */
+class AutowirePass implements CompilerPassInterface
+{
+    private $container;
+    private $reflectionClasses = array();
+    private $definedTypes = array();
+    private $types;
+    private $notGuessableTypes = array();
+
+    /**
+     * {@inheritdoc}
+     */
+    public function process(ContainerBuilder $container)
+    {
+        $this->container = $container;
+        foreach ($container->getDefinitions() as $id => $definition) {
+            if ($definition->isAutowired()) {
+                $this->completeDefinition($id, $definition);
+            }
+        }
+
+        // Free memory and remove circular reference to container
+        $this->container = null;
+        $this->reflectionClasses = array();
+        $this->definedTypes = array();
+        $this->types = null;
+        $this->notGuessableTypes = array();
+    }
+
+    /**
+     * Wires the given definition.
+     *
+     * @param string     $id
+     * @param Definition $definition
+     *
+     * @throws RuntimeException
+     */
+    private function completeDefinition($id, Definition $definition)
+    {
+        if (!$reflectionClass = $this->getReflectionClass($id, $definition)) {
+            return;
+        }
+
+        $this->container->addClassResource($reflectionClass);
+
+        if (!$constructor = $reflectionClass->getConstructor()) {
+            return;
+        }
+
+        $arguments = $definition->getArguments();
+        foreach ($constructor->getParameters() as $index => $parameter) {
+            $argumentExists = array_key_exists($index, $arguments);
+            if ($argumentExists && '' !== $arguments[$index]) {
+                continue;
+            }
+
+            try {
+                if (!$typeHint = $parameter->getClass()) {
+                    continue;
+                }
+
+                if (null === $this->types) {
+                    $this->populateAvailableTypes();
+                }
+
+                if (isset($this->types[$typeHint->name])) {
+                    $value = new Reference($this->types[$typeHint->name]);
+                } else {
+                    try {
+                        $value = $this->createAutowiredDefinition($typeHint, $id);
+                    } catch (RuntimeException $e) {
+                        if ($parameter->allowsNull()) {
+                            $value = null;
+                        } elseif ($parameter->isDefaultValueAvailable()) {
+                            $value = $parameter->getDefaultValue();
+                        } else {
+                            throw $e;
+                        }
+                    }
+                }
+            } catch (\ReflectionException $reflectionException) {
+                // Typehint against a non-existing class
+
+                if (!$parameter->isDefaultValueAvailable()) {
+                    throw new RuntimeException(sprintf('Cannot autowire argument %s for %s because the type-hinted class does not exist (%s).', $index + 1, $definition->getClass(), $reflectionException->getMessage()), 0, $reflectionException);
+                }
+
+                $value = $parameter->getDefaultValue();
+            }
+
+            if ($argumentExists) {
+                $definition->replaceArgument($index, $value);
+            } else {
+                $definition->addArgument($value);
+            }
+        }
+    }
+
+    /**
+     * Populates the list of available types.
+     */
+    private function populateAvailableTypes()
+    {
+        $this->types = array();
+
+        foreach ($this->container->getDefinitions() as $id => $definition) {
+            $this->populateAvailableType($id, $definition);
+        }
+    }
+
+    /**
+     * Populates the list of available types for a given definition.
+     *
+     * @param string     $id
+     * @param Definition $definition
+     */
+    private function populateAvailableType($id, Definition $definition)
+    {
+        // Never use abstract services
+        if ($definition->isAbstract()) {
+            return;
+        }
+
+        foreach ($definition->getAutowiringTypes() as $type) {
+            $this->definedTypes[$type] = true;
+            $this->types[$type] = $id;
+        }
+
+        // Cannot use reflection if the class isn't set
+        if (!$definition->getClass()) {
+            return;
+        }
+
+        if ($reflectionClass = $this->getReflectionClass($id, $definition)) {
+            $this->extractInterfaces($id, $reflectionClass);
+            $this->extractAncestors($id, $reflectionClass);
+        }
+    }
+
+    /**
+     * Extracts the list of all interfaces implemented by a class.
+     *
+     * @param string           $id
+     * @param \ReflectionClass $reflectionClass
+     */
+    private function extractInterfaces($id, \ReflectionClass $reflectionClass)
+    {
+        foreach ($reflectionClass->getInterfaces() as $interfaceName => $reflectionInterface) {
+            $this->set($interfaceName, $id);
+
+            $this->extractInterfaces($id, $reflectionInterface);
+        }
+    }
+
+    /**
+     * Extracts all inherited types of a class.
+     *
+     * @param string           $id
+     * @param \ReflectionClass $reflectionClass
+     */
+    private function extractAncestors($id, \ReflectionClass $reflectionClass)
+    {
+        $this->set($reflectionClass->name, $id);
+
+        if ($reflectionParentClass = $reflectionClass->getParentClass()) {
+            $this->extractAncestors($id, $reflectionParentClass);
+        }
+    }
+
+    /**
+     * Associates a type and a service id if applicable.
+     *
+     * @param string $type
+     * @param string $id
+     */
+    private function set($type, $id)
+    {
+        if (isset($this->definedTypes[$type]) || isset($this->notGuessableTypes[$type])) {
+            return;
+        }
+
+        if (isset($this->types[$type])) {
+            if ($this->types[$type] === $id) {
+                return;
+            }
+
+            unset($this->types[$type]);
+            $this->notGuessableTypes[$type] = true;
+
+            return;
+        }
+
+        $this->types[$type] = $id;
+    }
+
+    /**
+     * Registers a definition for the type if possible or throws an exception.
+     *
+     * @param \ReflectionClass $typeHint
+     * @param string           $id
+     *
+     * @return Reference A reference to the registered definition
+     *
+     * @throws RuntimeException
+     */
+    private function createAutowiredDefinition(\ReflectionClass $typeHint, $id)
+    {
+        if (isset($this->notGuessableTypes[$typeHint->name]) || !$typeHint->isInstantiable()) {
+            throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s".', $typeHint->name, $id));
+        }
+
+        $argumentId = sprintf('autowired.%s', $typeHint->name);
+
+        $argumentDefinition = $this->container->register($argumentId, $typeHint->name);
+        $argumentDefinition->setPublic(false);
+
+        $this->populateAvailableType($argumentId, $argumentDefinition);
+        $this->completeDefinition($argumentId, $argumentDefinition);
+
+        return new Reference($argumentId);
+    }
+
+    /**
+     * Retrieves the reflection class associated with the given service.
+     *
+     * @param string     $id
+     * @param Definition $definition
+     *
+     * @return \ReflectionClass|null
+     */
+    private function getReflectionClass($id, Definition $definition)
+    {
+        if (isset($this->reflectionClasses[$id])) {
+            return $this->reflectionClasses[$id];
+        }
+
+        if (!$class = $definition->getClass()) {
+            return;
+        }
+
+        $class = $this->container->getParameterBag()->resolveValue($class);
+
+        try {
+            return $this->reflectionClasses[$id] = new \ReflectionClass($class);
+        } catch (\ReflectionException $reflectionException) {
+            // return null
+        }
+    }
+}
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php b/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php
index 219e663..e54ee60 100644
--- a/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php
+++ b/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php
@@ -25,6 +25,7 @@
  * - non synthetic, non abstract services always have a class set
  * - synthetic services are always public
  * - synthetic services are always of non-prototype scope
+ * - shared services are always of non-prototype scope
  *
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
  */
@@ -46,10 +47,15 @@ public function process(ContainerBuilder $container)
             }
 
             // synthetic service has non-prototype scope
-            if ($definition->isSynthetic() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) {
+            if ($definition->isSynthetic() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) {
                 throw new RuntimeException(sprintf('A synthetic service ("%s") cannot be of scope "prototype".', $id));
             }
 
+            // shared service has non-prototype scope
+            if ($definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) {
+                throw new RuntimeException(sprintf('A shared service ("%s") cannot be of scope "prototype".', $id));
+            }
+
             if ($definition->getFactory() && ($definition->getFactoryClass(false) || $definition->getFactoryService(false) || $definition->getFactoryMethod(false))) {
                 throw new RuntimeException(sprintf('A service ("%s") can use either the old or the new factory syntax, not both.', $id));
             }
diff --git a/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php b/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php
index 82202a9..ac4072a 100644
--- a/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php
+++ b/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php
@@ -46,10 +46,10 @@ public function process(ContainerBuilder $container)
     {
         $this->container = $container;
 
-        $children = $this->container->getScopeChildren();
+        $children = $this->container->getScopeChildren(false);
         $ancestors = array();
 
-        $scopes = $this->container->getScopes();
+        $scopes = $this->container->getScopes(false);
         foreach ($scopes as $name => $parent) {
             $ancestors[$name] = array($parent);
 
@@ -64,7 +64,7 @@ public function process(ContainerBuilder $container)
             }
 
             $this->currentId = $id;
-            $this->currentScope = $scope = $definition->getScope();
+            $this->currentScope = $scope = $definition->getScope(false);
 
             if (ContainerInterface::SCOPE_CONTAINER === $scope) {
                 $this->currentScopeChildren = array_keys($scopes);
@@ -124,7 +124,7 @@ private function validateScope(Reference $reference, Definition $definition = nu
             return;
         }
 
-        if (!$reference->isStrict()) {
+        if (!$reference->isStrict(false)) {
             return;
         }
 
@@ -132,7 +132,7 @@ private function validateScope(Reference $reference, Definition $definition = nu
             return;
         }
 
-        if ($this->currentScope === $scope = $definition->getScope()) {
+        if ($this->currentScope === $scope = $definition->getScope(false)) {
             return;
         }
 
diff --git a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php b/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php
index ef0a19c..f80d705 100644
--- a/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php
+++ b/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php
@@ -19,18 +19,28 @@
  *
  * @author Christophe Coevoet <stof@notk.org>
  * @author Fabien Potencier <fabien@symfony.com>
+ * @author Diego Saint Esteben <diego@saintesteben.me>
  */
 class DecoratorServicePass implements CompilerPassInterface
 {
     public function process(ContainerBuilder $container)
     {
+        $definitions = new \SplPriorityQueue();
+        $order = PHP_INT_MAX;
+
         foreach ($container->getDefinitions() as $id => $definition) {
             if (!$decorated = $definition->getDecoratedService()) {
                 continue;
             }
+            $definitions->insert(array($id, $definition), array($decorated[2], --$order));
+        }
+
+        foreach ($definitions as $arr) {
+            list($id, $definition) = $arr;
+            list($inner, $renamedId) = $definition->getDecoratedService();
+
             $definition->setDecoratedService(null);
 
-            list($inner, $renamedId) = $decorated;
             if (!$renamedId) {
                 $renamedId = $id.'.inner';
             }
diff --git a/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php b/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php
index 026700d..1beaaf0 100644
--- a/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php
+++ b/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php
@@ -48,27 +48,7 @@ public function process(ContainerBuilder $container)
         $this->formatter = $this->compiler->getLoggingFormatter();
         $this->graph = $this->compiler->getServiceReferenceGraph();
 
-        foreach ($container->getDefinitions() as $id => $definition) {
-            $this->currentId = $id;
-
-            $definition->setArguments(
-                $this->inlineArguments($container, $definition->getArguments())
-            );
-
-            $definition->setMethodCalls(
-                $this->inlineArguments($container, $definition->getMethodCalls())
-            );
-
-            $definition->setProperties(
-                $this->inlineArguments($container, $definition->getProperties())
-            );
-
-            $configurator = $this->inlineArguments($container, array($definition->getConfigurator()));
-            $definition->setConfigurator($configurator[0]);
-
-            $factory = $this->inlineArguments($container, array($definition->getFactory()));
-            $definition->setFactory($factory[0]);
-        }
+        $container->setDefinitions($this->inlineArguments($container, $container->getDefinitions(), true));
     }
 
     /**
@@ -76,12 +56,16 @@ public function process(ContainerBuilder $container)
      *
      * @param ContainerBuilder $container The ContainerBuilder
      * @param array            $arguments An array of arguments
+     * @param bool             $isRoot    If we are processing the root definitions or not
      *
      * @return array
      */
-    private function inlineArguments(ContainerBuilder $container, array $arguments)
+    private function inlineArguments(ContainerBuilder $container, array $arguments, $isRoot = false)
     {
         foreach ($arguments as $k => $argument) {
+            if ($isRoot) {
+                $this->currentId = $k;
+            }
             if (is_array($argument)) {
                 $arguments[$k] = $this->inlineArguments($container, $argument);
             } elseif ($argument instanceof Reference) {
@@ -92,7 +76,7 @@ private function inlineArguments(ContainerBuilder $container, array $arguments)
                 if ($this->isInlineableDefinition($container, $id, $definition = $container->getDefinition($id))) {
                     $this->compiler->addLogMessage($this->formatter->formatInlineService($this, $id, $this->currentId));
 
-                    if (ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope()) {
+                    if ($definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope(false)) {
                         $arguments[$k] = $definition;
                     } else {
                         $arguments[$k] = clone $definition;
@@ -102,6 +86,12 @@ private function inlineArguments(ContainerBuilder $container, array $arguments)
                 $argument->setArguments($this->inlineArguments($container, $argument->getArguments()));
                 $argument->setMethodCalls($this->inlineArguments($container, $argument->getMethodCalls()));
                 $argument->setProperties($this->inlineArguments($container, $argument->getProperties()));
+
+                $configurator = $this->inlineArguments($container, array($argument->getConfigurator()));
+                $argument->setConfigurator($configurator[0]);
+
+                $factory = $this->inlineArguments($container, array($argument->getFactory()));
+                $argument->setFactory($factory[0]);
             }
         }
 
@@ -119,7 +109,7 @@ private function inlineArguments(ContainerBuilder $container, array $arguments)
      */
     private function isInlineableDefinition(ContainerBuilder $container, $id, Definition $definition)
     {
-        if (ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) {
+        if (!$definition->isShared() || ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) {
             return true;
         }
 
@@ -152,6 +142,6 @@ private function isInlineableDefinition(ContainerBuilder $container, $id, Defini
             return false;
         }
 
-        return $container->getDefinition(reset($ids))->getScope() === $definition->getScope();
+        return $container->getDefinition(reset($ids))->getScope(false) === $definition->getScope(false);
     }
 }
diff --git a/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php b/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php
index 6bd6161..db208fa 100644
--- a/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php
+++ b/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php
@@ -20,7 +20,7 @@ class LoggingFormatter
 {
     public function formatRemoveService(CompilerPassInterface $pass, $id, $reason)
     {
-        return $this->format($pass, sprintf('Removed service "%s"; reason: %s', $id, $reason));
+        return $this->format($pass, sprintf('Removed service "%s"; reason: %s.', $id, $reason));
     }
 
     public function formatInlineService(CompilerPassInterface $pass, $id, $target)
diff --git a/vendor/symfony/dependency-injection/Compiler/PassConfig.php b/vendor/symfony/dependency-injection/Compiler/PassConfig.php
index 2849dfe..246529d 100644
--- a/vendor/symfony/dependency-injection/Compiler/PassConfig.php
+++ b/vendor/symfony/dependency-injection/Compiler/PassConfig.php
@@ -50,6 +50,7 @@ public function __construct()
             new CheckDefinitionValidityPass(),
             new ResolveReferencesToAliasesPass(),
             new ResolveInvalidReferencesPass(),
+            new AutowirePass(),
             new AnalyzeServiceReferencesPass(true),
             new CheckCircularReferencesPass(),
             new CheckReferenceValidityPass(),
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php
index 3fc6a11..62ed326 100644
--- a/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php
+++ b/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php
@@ -21,12 +21,13 @@
  * merged Definition instance.
  *
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ * @author Nicolas Grekas <p@tchwork.com>
  */
 class ResolveDefinitionTemplatesPass implements CompilerPassInterface
 {
-    private $container;
     private $compiler;
     private $formatter;
+    private $currentId;
 
     /**
      * Process the ContainerBuilder to replace DefinitionDecorator instances with their real Definition instances.
@@ -35,44 +36,80 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface
      */
     public function process(ContainerBuilder $container)
     {
-        $this->container = $container;
         $this->compiler = $container->getCompiler();
         $this->formatter = $this->compiler->getLoggingFormatter();
 
-        foreach ($container->getDefinitions() as $id => $definition) {
-            // yes, we are specifically fetching the definition from the
-            // container to ensure we are not operating on stale data
-            $definition = $container->getDefinition($id);
-            if (!$definition instanceof DefinitionDecorator || $definition->isAbstract()) {
-                continue;
-            }
+        $container->setDefinitions($this->resolveArguments($container, $container->getDefinitions(), true));
+    }
 
-            $this->resolveDefinition($id, $definition);
+    /**
+     * Resolves definition decorator arguments.
+     *
+     * @param ContainerBuilder $container The ContainerBuilder
+     * @param array            $arguments An array of arguments
+     * @param bool             $isRoot    If we are processing the root definitions or not
+     *
+     * @return array
+     */
+    private function resolveArguments(ContainerBuilder $container, array $arguments, $isRoot = false)
+    {
+        foreach ($arguments as $k => $argument) {
+            if ($isRoot) {
+                // yes, we are specifically fetching the definition from the
+                // container to ensure we are not operating on stale data
+                $arguments[$k] = $argument = $container->getDefinition($k);
+                $this->currentId = $k;
+            }
+            if (is_array($argument)) {
+                $arguments[$k] = $this->resolveArguments($container, $argument);
+            } elseif ($argument instanceof Definition) {
+                if ($argument instanceof DefinitionDecorator) {
+                    $arguments[$k] = $argument = $this->resolveDefinition($container, $argument);
+                    if ($isRoot) {
+                        $container->setDefinition($k, $argument);
+                    }
+                }
+                $argument->setArguments($this->resolveArguments($container, $argument->getArguments()));
+                $argument->setMethodCalls($this->resolveArguments($container, $argument->getMethodCalls()));
+                $argument->setProperties($this->resolveArguments($container, $argument->getProperties()));
+
+                $configurator = $this->resolveArguments($container, array($argument->getConfigurator()));
+                $argument->setConfigurator($configurator[0]);
+
+                $factory = $this->resolveArguments($container, array($argument->getFactory()));
+                $argument->setFactory($factory[0]);
+            }
         }
+
+        return $arguments;
     }
 
     /**
      * Resolves the definition.
      *
-     * @param string              $id         The definition identifier
+     * @param ContainerBuilder    $container  The ContainerBuilder
      * @param DefinitionDecorator $definition
      *
      * @return Definition
      *
      * @throws \RuntimeException When the definition is invalid
      */
-    private function resolveDefinition($id, DefinitionDecorator $definition)
+    private function resolveDefinition(ContainerBuilder $container, DefinitionDecorator $definition)
     {
-        if (!$this->container->hasDefinition($parent = $definition->getParent())) {
-            throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $id));
+        if (!$container->hasDefinition($parent = $definition->getParent())) {
+            throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $this->currentId));
         }
 
-        $parentDef = $this->container->getDefinition($parent);
+        $parentDef = $container->getDefinition($parent);
         if ($parentDef instanceof DefinitionDecorator) {
-            $parentDef = $this->resolveDefinition($parent, $parentDef);
+            $id = $this->currentId;
+            $this->currentId = $parent;
+            $parentDef = $this->resolveDefinition($container, $parentDef);
+            $container->setDefinition($parent, $parentDef);
+            $this->currentId = $id;
         }
 
-        $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $id, $parent));
+        $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $this->currentId, $parent));
         $def = new Definition();
 
         // merge in parent definition
@@ -81,6 +118,7 @@ private function resolveDefinition($id, DefinitionDecorator $definition)
         $def->setArguments($parentDef->getArguments());
         $def->setMethodCalls($parentDef->getMethodCalls());
         $def->setProperties($parentDef->getProperties());
+        $def->setAutowiringTypes($parentDef->getAutowiringTypes());
         if ($parentDef->getFactoryClass(false)) {
             $def->setFactoryClass($parentDef->getFactoryClass(false));
         }
@@ -90,6 +128,9 @@ private function resolveDefinition($id, DefinitionDecorator $definition)
         if ($parentDef->getFactoryService(false)) {
             $def->setFactoryService($parentDef->getFactoryService(false));
         }
+        if ($parentDef->isDeprecated()) {
+            $def->setDeprecated(true, $parentDef->getDeprecationMessage('%service_id%'));
+        }
         $def->setFactory($parentDef->getFactory());
         $def->setConfigurator($parentDef->getConfigurator());
         $def->setFile($parentDef->getFile());
@@ -125,6 +166,9 @@ private function resolveDefinition($id, DefinitionDecorator $definition)
         if (isset($changes['lazy'])) {
             $def->setLazy($definition->isLazy());
         }
+        if (isset($changes['deprecated'])) {
+            $def->setDeprecated($definition->isDeprecated(), $definition->getDeprecationMessage('%service_id%'));
+        }
         if (isset($changes['decorated_service'])) {
             $decoratedService = $definition->getDecoratedService();
             if (null === $decoratedService) {
@@ -159,14 +203,16 @@ private function resolveDefinition($id, DefinitionDecorator $definition)
             $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls));
         }
 
+        // merge autowiring types
+        foreach ($definition->getAutowiringTypes() as $autowiringType) {
+            $def->addAutowiringType($autowiringType);
+        }
+
         // these attributes are always taken from the child
         $def->setAbstract($definition->isAbstract());
-        $def->setScope($definition->getScope());
+        $def->setScope($definition->getScope(false), false);
         $def->setTags($definition->getTags());
 
-        // set new definition on container
-        $this->container->setDefinition($id, $def);
-
         return $def;
     }
 }
diff --git a/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php b/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php
index c90d76f..3111d7f 100644
--- a/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php
+++ b/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php
@@ -68,7 +68,7 @@ private function processArguments(array $arguments)
                 $defId = $this->getDefinitionId($id = (string) $argument);
 
                 if ($defId !== $id) {
-                    $arguments[$k] = new Reference($defId, $argument->getInvalidBehavior(), $argument->isStrict());
+                    $arguments[$k] = new Reference($defId, $argument->getInvalidBehavior(), $argument->isStrict(false));
                 }
             }
         }
diff --git a/vendor/symfony/dependency-injection/Container.php b/vendor/symfony/dependency-injection/Container.php
index 510d030..e11e3df 100644
--- a/vendor/symfony/dependency-injection/Container.php
+++ b/vendor/symfony/dependency-injection/Container.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\DependencyInjection\Exception\InactiveScopeException;
 use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\LogicException;
 use Symfony\Component\DependencyInjection\Exception\RuntimeException;
 use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
 use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
@@ -58,7 +59,7 @@
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
  */
-class Container implements IntrospectableContainerInterface
+class Container implements IntrospectableContainerInterface, ResettableContainerInterface
 {
     /**
      * @var ParameterBagInterface
@@ -164,6 +165,8 @@ public function setParameter($name, $value)
      * Setting a service to null resets the service: has() returns false and get()
      * behaves in the same way as if the service was never created.
      *
+     * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0.
+     *
      * @param string $id      The service identifier
      * @param object $service The service instance
      * @param string $scope   The scope of the service
@@ -173,6 +176,10 @@ public function setParameter($name, $value)
      */
     public function set($id, $service, $scope = self::SCOPE_CONTAINER)
     {
+        if (!in_array($scope, array('container', 'request')) || ('request' === $scope && 'request' !== $id)) {
+            @trigger_error('The concept of container scopes is deprecated since version 2.8 and will be removed in 3.0. Omit the third parameter.', E_USER_DEPRECATED);
+        }
+
         if (self::SCOPE_PROTOTYPE === $scope) {
             throw new InvalidArgumentException(sprintf('You cannot set service "%s" of scope "prototype".', $id));
         }
@@ -305,10 +312,7 @@ public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE
                 $service = $this->$method();
             } catch (\Exception $e) {
                 unset($this->loading[$id]);
-
-                if (array_key_exists($id, $this->services)) {
-                    unset($this->services[$id]);
-                }
+                unset($this->services[$id]);
 
                 if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
                     return;
@@ -348,6 +352,18 @@ public function initialized($id)
     }
 
     /**
+     * {@inheritdoc}
+     */
+    public function reset()
+    {
+        if (!empty($this->scopedServices)) {
+            throw new LogicException('Resetting the container is not allowed when a scope is active.');
+        }
+
+        $this->services = array();
+    }
+
+    /**
      * Gets all service ids.
      *
      * @return array An array of all defined service ids
@@ -373,9 +389,15 @@ public function getServiceIds()
      *
      * @throws RuntimeException         When the parent scope is inactive
      * @throws InvalidArgumentException When the scope does not exist
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function enterScope($name)
     {
+        if ('request' !== $name) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         if (!isset($this->scopes[$name])) {
             throw new InvalidArgumentException(sprintf('The scope "%s" does not exist.', $name));
         }
@@ -419,9 +441,15 @@ public function enterScope($name)
      * @param string $name The name of the scope to leave
      *
      * @throws InvalidArgumentException if the scope is not active
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function leaveScope($name)
     {
+        if ('request' !== $name) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         if (!isset($this->scopedServices[$name])) {
             throw new InvalidArgumentException(sprintf('The scope "%s" is not active.', $name));
         }
@@ -464,12 +492,17 @@ public function leaveScope($name)
      * @param ScopeInterface $scope
      *
      * @throws InvalidArgumentException
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function addScope(ScopeInterface $scope)
     {
         $name = $scope->getName();
         $parentScope = $scope->getParentName();
 
+        if ('request' !== $name) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
         if (self::SCOPE_CONTAINER === $name || self::SCOPE_PROTOTYPE === $name) {
             throw new InvalidArgumentException(sprintf('The scope "%s" is reserved.', $name));
         }
@@ -496,9 +529,15 @@ public function addScope(ScopeInterface $scope)
      * @param string $name The name of the scope
      *
      * @return bool
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function hasScope($name)
     {
+        if ('request' !== $name) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         return isset($this->scopes[$name]);
     }
 
@@ -510,9 +549,13 @@ public function hasScope($name)
      * @param string $name
      *
      * @return bool
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function isScopeActive($name)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+
         return isset($this->scopedServices[$name]);
     }
 
@@ -539,4 +582,8 @@ public static function underscore($id)
     {
         return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), strtr($id, '_', '.')));
     }
+
+    private function __clone()
+    {
+    }
 }
diff --git a/vendor/symfony/dependency-injection/ContainerAware.php b/vendor/symfony/dependency-injection/ContainerAware.php
index af977fe..5686bf8 100644
--- a/vendor/symfony/dependency-injection/ContainerAware.php
+++ b/vendor/symfony/dependency-injection/ContainerAware.php
@@ -15,6 +15,8 @@
  * A simple implementation of ContainerAwareInterface.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated since version 2.8, to be removed in 3.0. Use the ContainerAwareTrait instead.
  */
 abstract class ContainerAware implements ContainerAwareInterface
 {
@@ -24,9 +26,9 @@
     protected $container;
 
     /**
-     * Sets the Container associated with this Controller.
+     * Sets the container.
      *
-     * @param ContainerInterface $container A ContainerInterface instance
+     * @param ContainerInterface|null $container A ContainerInterface instance or null
      */
     public function setContainer(ContainerInterface $container = null)
     {
diff --git a/vendor/symfony/dependency-injection/ContainerAwareInterface.php b/vendor/symfony/dependency-injection/ContainerAwareInterface.php
index 7007265..fe301b6 100644
--- a/vendor/symfony/dependency-injection/ContainerAwareInterface.php
+++ b/vendor/symfony/dependency-injection/ContainerAwareInterface.php
@@ -19,7 +19,7 @@
 interface ContainerAwareInterface
 {
     /**
-     * Sets the Container.
+     * Sets the container.
      *
      * @param ContainerInterface|null $container A ContainerInterface instance or null
      */
diff --git a/vendor/symfony/dependency-injection/ContainerAwareTrait.php b/vendor/symfony/dependency-injection/ContainerAwareTrait.php
index 57280aa..ccf064f 100644
--- a/vendor/symfony/dependency-injection/ContainerAwareTrait.php
+++ b/vendor/symfony/dependency-injection/ContainerAwareTrait.php
@@ -24,9 +24,9 @@
     protected $container;
 
     /**
-     * Sets the Container associated with this Controller.
+     * Sets the container.
      *
-     * @param ContainerInterface $container A ContainerInterface instance
+     * @param ContainerInterface|null $container A ContainerInterface instance or null
      */
     public function setContainer(ContainerInterface $container = null)
     {
diff --git a/vendor/symfony/dependency-injection/ContainerBuilder.php b/vendor/symfony/dependency-injection/ContainerBuilder.php
index d692873..1347f99 100644
--- a/vendor/symfony/dependency-injection/ContainerBuilder.php
+++ b/vendor/symfony/dependency-injection/ContainerBuilder.php
@@ -89,6 +89,11 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
     private $expressionLanguageProviders = array();
 
     /**
+     * @var string[] with tag names used by findTaggedServiceIds
+     */
+    private $usedTags = array();
+
+    /**
      * Sets the track resources flag.
      *
      * If you are not using the loaders and therefore don't want
@@ -330,9 +335,15 @@ public function getCompiler()
      * Returns all Scopes.
      *
      * @return array An array of scopes
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
-    public function getScopes()
+    public function getScopes($triggerDeprecationError = true)
     {
+        if ($triggerDeprecationError) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         return $this->scopes;
     }
 
@@ -340,15 +351,23 @@ public function getScopes()
      * Returns all Scope children.
      *
      * @return array An array of scope children.
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
-    public function getScopeChildren()
+    public function getScopeChildren($triggerDeprecationError = true)
     {
+        if ($triggerDeprecationError) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         return $this->scopeChildren;
     }
 
     /**
      * Sets a service.
      *
+     * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0.
+     *
      * @param string $id      The service identifier
      * @param object $service The service instance
      * @param string $scope   The scope
@@ -843,6 +862,10 @@ public function createService(Definition $definition, $id, $tryProxy = true)
             throw new RuntimeException(sprintf('You have requested a synthetic service ("%s"). The DIC does not know how to construct this service.', $id));
         }
 
+        if ($definition->isDeprecated()) {
+            @trigger_error($definition->getDeprecationMessage($id), E_USER_DEPRECATED);
+        }
+
         if ($tryProxy && $definition->isLazy()) {
             $container = $this;
 
@@ -876,6 +899,14 @@ public function createService(Definition $definition, $id, $tryProxy = true)
             }
 
             $service = call_user_func_array($factory, $arguments);
+
+            if (!$definition->isDeprecated() && is_array($factory) && is_string($factory[0])) {
+                $r = new \ReflectionClass($factory[0]);
+
+                if (0 < strpos($r->getDocComment(), "\n * @deprecated ")) {
+                    @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" factory class. It should either be deprecated or its factory upgraded.', $id, $r->name), E_USER_DEPRECATED);
+                }
+            }
         } elseif (null !== $definition->getFactoryMethod(false)) {
             if (null !== $definition->getFactoryClass(false)) {
                 $factory = $parameterBag->resolveValue($definition->getFactoryClass(false));
@@ -890,6 +921,10 @@ public function createService(Definition $definition, $id, $tryProxy = true)
             $r = new \ReflectionClass($parameterBag->resolveValue($definition->getClass()));
 
             $service = null === $r->getConstructor() ? $r->newInstance() : $r->newInstanceArgs($arguments);
+
+            if (!$definition->isDeprecated() && 0 < strpos($r->getDocComment(), "\n * @deprecated ")) {
+                @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" class. It should either be deprecated or its implementation upgraded.', $id, $r->name), E_USER_DEPRECATED);
+            }
         }
 
         if ($tryProxy || !$definition->isLazy()) {
@@ -901,7 +936,7 @@ public function createService(Definition $definition, $id, $tryProxy = true)
             $this->callMethod($service, $call);
         }
 
-        $properties = $this->resolveServices($parameterBag->resolveValue($definition->getProperties()));
+        $properties = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties())));
         foreach ($properties as $name => $value) {
             $service->$name = $value;
         }
@@ -972,6 +1007,7 @@ public function resolveServices($value)
      */
     public function findTaggedServiceIds($name)
     {
+        $this->usedTags[] = $name;
         $tags = array();
         foreach ($this->getDefinitions() as $id => $definition) {
             if ($definition->hasTag($name)) {
@@ -997,6 +1033,16 @@ public function findTags()
         return array_unique($tags);
     }
 
+    /**
+     * Returns all tags not queried by findTaggedServiceIds.
+     *
+     * @return string[] An array of tags
+     */
+    public function findUnusedTags()
+    {
+        return array_values(array_diff($this->findTags(), $this->usedTags));
+    }
+
     public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
     {
         $this->expressionLanguageProviders[] = $provider;
@@ -1088,7 +1134,7 @@ private function callMethod($service, $call)
             }
         }
 
-        call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1])));
+        call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1]))));
     }
 
     /**
@@ -1102,7 +1148,7 @@ private function callMethod($service, $call)
      */
     private function shareService(Definition $definition, $service, $id)
     {
-        if (self::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) {
+        if ($definition->isShared() && self::SCOPE_PROTOTYPE !== $scope = $definition->getScope(false)) {
             if (self::SCOPE_CONTAINER !== $scope && !isset($this->scopedServices[$scope])) {
                 throw new InactiveScopeException($id, $scope);
             }
diff --git a/vendor/symfony/dependency-injection/ContainerInterface.php b/vendor/symfony/dependency-injection/ContainerInterface.php
index 80d6414..d9076eb 100644
--- a/vendor/symfony/dependency-injection/ContainerInterface.php
+++ b/vendor/symfony/dependency-injection/ContainerInterface.php
@@ -32,6 +32,8 @@
     /**
      * Sets a service.
      *
+     * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0.
+     *
      * @param string $id      The service identifier
      * @param object $service The service instance
      * @param string $scope   The scope of the service
@@ -94,6 +96,8 @@ public function setParameter($name, $value);
      * Enters the given scope.
      *
      * @param string $name
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function enterScope($name);
 
@@ -101,6 +105,8 @@ public function enterScope($name);
      * Leaves the current scope, and re-enters the parent scope.
      *
      * @param string $name
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function leaveScope($name);
 
@@ -108,6 +114,8 @@ public function leaveScope($name);
      * Adds a scope to the container.
      *
      * @param ScopeInterface $scope
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function addScope(ScopeInterface $scope);
 
@@ -117,6 +125,8 @@ public function addScope(ScopeInterface $scope);
      * @param string $name
      *
      * @return bool
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function hasScope($name);
 
@@ -128,6 +138,8 @@ public function hasScope($name);
      * @param string $name
      *
      * @return bool
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
     public function isScopeActive($name);
 }
diff --git a/vendor/symfony/dependency-injection/Definition.php b/vendor/symfony/dependency-injection/Definition.php
index 777f4a6..6b7138e 100644
--- a/vendor/symfony/dependency-injection/Definition.php
+++ b/vendor/symfony/dependency-injection/Definition.php
@@ -27,6 +27,9 @@ class Definition
     private $factoryClass;
     private $factoryMethod;
     private $factoryService;
+    private $shared = true;
+    private $deprecated = false;
+    private $deprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.';
     private $scope = ContainerInterface::SCOPE_CONTAINER;
     private $properties = array();
     private $calls = array();
@@ -38,6 +41,8 @@ class Definition
     private $synchronized = false;
     private $lazy = false;
     private $decoratedService;
+    private $autowired = false;
+    private $autowiringTypes = array();
 
     protected $arguments;
 
@@ -139,12 +144,13 @@ public function setFactoryMethod($factoryMethod)
      *
      * @param null|string $id        The decorated service id, use null to remove decoration
      * @param null|string $renamedId The new decorated service id
+     * @param int         $priority  The priority of decoration
      *
      * @return Definition The current instance
      *
      * @throws InvalidArgumentException In case the decorated service id and the new decorated service id are equals.
      */
-    public function setDecoratedService($id, $renamedId = null)
+    public function setDecoratedService($id, $renamedId = null, $priority = 0)
     {
         if ($renamedId && $id == $renamedId) {
             throw new \InvalidArgumentException(sprintf('The decorated service inner name for "%s" must be different than the service name itself.', $id));
@@ -153,7 +159,7 @@ public function setDecoratedService($id, $renamedId = null)
         if (null === $id) {
             $this->decoratedService = null;
         } else {
-            $this->decoratedService = array($id, $renamedId);
+            $this->decoratedService = array($id, $renamedId, (int) $priority);
         }
 
         return $this;
@@ -162,7 +168,7 @@ public function setDecoratedService($id, $renamedId = null)
     /**
      * Gets the service that decorates this service.
      *
-     * @return null|array An array composed of the decorated service id and the new id for it, null if no service is decorated
+     * @return null|array An array composed of the decorated service id, the new id for it and the priority of decoration, null if no service is decorated
      */
     public function getDecoratedService()
     {
@@ -495,9 +501,7 @@ public function hasTag($name)
      */
     public function clearTag($name)
     {
-        if (isset($this->tags[$name])) {
-            unset($this->tags[$name]);
-        }
+        unset($this->tags[$name]);
 
         return $this;
     }
@@ -539,14 +543,48 @@ public function getFile()
     }
 
     /**
+     * Sets if the service must be shared or not.
+     *
+     * @param bool $shared Whether the service must be shared or not
+     *
+     * @return Definition The current instance
+     */
+    public function setShared($shared)
+    {
+        $this->shared = (bool) $shared;
+
+        return $this;
+    }
+
+    /**
+     * Whether this service is shared.
+     *
+     * @return bool
+     */
+    public function isShared()
+    {
+        return $this->shared;
+    }
+
+    /**
      * Sets the scope of the service.
      *
      * @param string $scope Whether the service must be shared or not
      *
      * @return Definition The current instance
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
-    public function setScope($scope)
+    public function setScope($scope, $triggerDeprecationError = true)
     {
+        if ($triggerDeprecationError) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
+        if (ContainerInterface::SCOPE_PROTOTYPE === $scope) {
+            $this->setShared(false);
+        }
+
         $this->scope = $scope;
 
         return $this;
@@ -556,9 +594,15 @@ public function setScope($scope)
      * Returns the scope of the service.
      *
      * @return string
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
-    public function getScope()
+    public function getScope($triggerDeprecationError = true)
     {
+        if ($triggerDeprecationError) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         return $this->scope;
     }
 
@@ -699,6 +743,59 @@ public function isAbstract()
     }
 
     /**
+     * Whether this definition is deprecated, that means it should not be called
+     * anymore.
+     *
+     * @param bool   $status
+     * @param string $template Template message to use if the definition is deprecated
+     *
+     * @return Definition the current instance
+     *
+     * @throws InvalidArgumentException When the message template is invalid.
+     */
+    public function setDeprecated($status = true, $template = null)
+    {
+        if (null !== $template) {
+            if (preg_match('#[\r\n]|\*/#', $template)) {
+                throw new InvalidArgumentException('Invalid characters found in deprecation template.');
+            }
+
+            if (false === strpos($template, '%service_id%')) {
+                throw new InvalidArgumentException('The deprecation template must contain the "%service_id%" placeholder.');
+            }
+
+            $this->deprecationTemplate = $template;
+        }
+
+        $this->deprecated = (bool) $status;
+
+        return $this;
+    }
+
+    /**
+     * Whether this definition is deprecated, that means it should not be called
+     * anymore.
+     *
+     * @return bool
+     */
+    public function isDeprecated()
+    {
+        return $this->deprecated;
+    }
+
+    /**
+     * Message to use if this definition is deprecated.
+     *
+     * @param string $id Service id relying on this definition
+     *
+     * @return string
+     */
+    public function getDeprecationMessage($id)
+    {
+        return str_replace('%service_id%', $id, $this->deprecationTemplate);
+    }
+
+    /**
      * Sets a configurator to call after the service is fully initialized.
      *
      * @param callable $callable A PHP callable
@@ -721,4 +818,96 @@ public function getConfigurator()
     {
         return $this->configurator;
     }
+
+    /**
+     * Sets types that will default to this definition.
+     *
+     * @param string[] $types
+     *
+     * @return Definition The current instance
+     */
+    public function setAutowiringTypes(array $types)
+    {
+        $this->autowiringTypes = array();
+
+        foreach ($types as $type) {
+            $this->autowiringTypes[$type] = true;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Is the definition autowired?
+     *
+     * @return bool
+     */
+    public function isAutowired()
+    {
+        return $this->autowired;
+    }
+
+    /**
+     * Sets autowired.
+     *
+     * @param $autowired
+     *
+     * @return Definition The current instance
+     */
+    public function setAutowired($autowired)
+    {
+        $this->autowired = $autowired;
+
+        return $this;
+    }
+
+    /**
+     * Gets autowiring types that will default to this definition.
+     *
+     * @return string[]
+     */
+    public function getAutowiringTypes()
+    {
+        return array_keys($this->autowiringTypes);
+    }
+
+    /**
+     * Adds a type that will default to this definition.
+     *
+     * @param string $type
+     *
+     * @return Definition The current instance
+     */
+    public function addAutowiringType($type)
+    {
+        $this->autowiringTypes[$type] = true;
+
+        return $this;
+    }
+
+    /**
+     * Removes a type.
+     *
+     * @param string $type
+     *
+     * @return Definition The current instance
+     */
+    public function removeAutowiringType($type)
+    {
+        unset($this->autowiringTypes[$type]);
+
+        return $this;
+    }
+
+    /**
+     * Will this definition default for the given type?
+     *
+     * @param string $type
+     *
+     * @return bool
+     */
+    public function hasAutowiringType($type)
+    {
+        return isset($this->autowiringTypes[$type]);
+    }
 }
diff --git a/vendor/symfony/dependency-injection/DefinitionDecorator.php b/vendor/symfony/dependency-injection/DefinitionDecorator.php
index 334127a..e9413d9 100644
--- a/vendor/symfony/dependency-injection/DefinitionDecorator.php
+++ b/vendor/symfony/dependency-injection/DefinitionDecorator.php
@@ -150,11 +150,21 @@ public function setLazy($boolean)
     /**
      * {@inheritdoc}
      */
-    public function setDecoratedService($id, $renamedId = null)
+    public function setDecoratedService($id, $renamedId = null, $priority = 0)
     {
         $this->changes['decorated_service'] = true;
 
-        return parent::setDecoratedService($id, $renamedId);
+        return parent::setDecoratedService($id, $renamedId, $priority);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setDeprecated($boolean = true, $template = null)
+    {
+        $this->changes['deprecated'] = true;
+
+        return parent::setDeprecated($boolean, $template);
     }
 
     /**
diff --git a/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php b/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php
index f69d1e9..9710e8b 100644
--- a/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php
+++ b/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php
@@ -177,7 +177,7 @@ private function findNodes()
             } catch (ParameterNotFoundException $e) {
             }
 
-            $nodes[$id] = array('class' => str_replace('\\', '\\\\', $class), 'attributes' => array_merge($this->options['node.definition'], array('style' => ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope() ? 'filled' : 'dotted')));
+            $nodes[$id] = array('class' => str_replace('\\', '\\\\', $class), 'attributes' => array_merge($this->options['node.definition'], array('style' => $definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope(false) ? 'filled' : 'dotted')));
             $container->setDefinition($id, new Definition('stdClass'));
         }
 
@@ -205,7 +205,7 @@ private function cloneContainer()
         $container->setDefinitions($this->container->getDefinitions());
         $container->setAliases($this->container->getAliases());
         $container->setResources($this->container->getResources());
-        foreach ($this->container->getScopes() as $scope => $parentScope) {
+        foreach ($this->container->getScopes(false) as $scope => $parentScope) {
             $container->addScope(new Scope($scope, $parentScope));
         }
         foreach ($this->container->getExtensions() as $extension) {
diff --git a/vendor/symfony/dependency-injection/Dumper/PhpDumper.php b/vendor/symfony/dependency-injection/Dumper/PhpDumper.php
index bb3df8b..6b8d952 100644
--- a/vendor/symfony/dependency-injection/Dumper/PhpDumper.php
+++ b/vendor/symfony/dependency-injection/Dumper/PhpDumper.php
@@ -382,9 +382,9 @@ private function addServiceInstance($id, $definition)
         $isProxyCandidate = $this->getProxyDumper()->isProxyCandidate($definition);
         $instantiation = '';
 
-        if (!$isProxyCandidate && ContainerInterface::SCOPE_CONTAINER === $definition->getScope()) {
+        if (!$isProxyCandidate && $definition->isShared() && ContainerInterface::SCOPE_CONTAINER === $definition->getScope(false)) {
             $instantiation = "\$this->services['$id'] = ".($simple ? '' : '$instance');
-        } elseif (!$isProxyCandidate && ContainerInterface::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) {
+        } elseif (!$isProxyCandidate && $definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $scope = $definition->getScope(false)) {
             $instantiation = "\$this->services['$id'] = \$this->scopedServices['$scope']['$id'] = ".($simple ? '' : '$instance');
         } elseif (!$simple) {
             $instantiation = '$instance';
@@ -578,7 +578,7 @@ private function addService($id, $definition)
             $return[] = sprintf('@return object An instance returned by %s::%s().', $definition->getFactoryService(false), $definition->getFactoryMethod(false));
         }
 
-        $scope = $definition->getScope();
+        $scope = $definition->getScope(false);
         if (!in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) {
             if ($return && 0 === strpos($return[count($return) - 1], '@return')) {
                 $return[] = '';
@@ -586,10 +586,18 @@ private function addService($id, $definition)
             $return[] = sprintf("@throws InactiveScopeException when the '%s' service is requested while the '%s' scope is not active", $id, $scope);
         }
 
-        $return = implode("\n     * ", $return);
+        if ($definition->isDeprecated()) {
+            if ($return && 0 === strpos($return[count($return) - 1], '@return')) {
+                $return[] = '';
+            }
+
+            $return[] = sprintf('@deprecated %s', $definition->getDeprecationMessage($id));
+        }
+
+        $return = str_replace("\n     * \n", "\n     *\n", implode("\n     * ", $return));
 
         $doc = '';
-        if (ContainerInterface::SCOPE_PROTOTYPE !== $scope) {
+        if ($definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $scope) {
             $doc .= <<<EOF
 
      *
@@ -608,6 +616,15 @@ private function addService($id, $definition)
 EOF;
         }
 
+        if ($definition->isAutowired()) {
+            $doc = <<<EOF
+
+     *
+     * This service is autowired.
+EOF;
+
+        }
+
         if ($definition->isLazy()) {
             $lazyInitialization = '$lazyLoad = true';
             $lazyInitializationDoc = "\n     * @param bool    \$lazyLoad whether to try lazy-loading the service with a proxy\n     *";
@@ -646,6 +663,10 @@ private function addService($id, $definition)
         if ($definition->isSynthetic()) {
             $code .= sprintf("        throw new RuntimeException('You have requested a synthetic service (\"%s\"). The DIC does not know how to construct this service.');\n    }\n", $id);
         } else {
+            if ($definition->isDeprecated()) {
+                $code .= sprintf("        @trigger_error(%s, E_USER_DEPRECATED);\n\n", var_export($definition->getDeprecationMessage($id), true));
+            }
+
             $code .=
                 $this->addServiceInclude($id, $definition).
                 $this->addServiceLocalTempVariables($id, $definition).
@@ -860,10 +881,10 @@ public function __construct()
 
 EOF;
 
-        if (count($scopes = $this->container->getScopes()) > 0) {
+        if (count($scopes = $this->container->getScopes(false)) > 0) {
             $code .= "\n";
             $code .= '        $this->scopes = '.$this->dumpValue($scopes).";\n";
-            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n";
+            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren(false)).";\n";
         }
 
         $code .= $this->addMethodMap();
@@ -907,9 +928,9 @@ public function __construct()
 EOF;
 
         $code .= "\n";
-        if (count($scopes = $this->container->getScopes()) > 0) {
+        if (count($scopes = $this->container->getScopes(false)) > 0) {
             $code .= '        $this->scopes = '.$this->dumpValue($scopes).";\n";
-            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n";
+            $code .= '        $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren(false)).";\n";
         } else {
             $code .= "        \$this->scopes = array();\n";
             $code .= "        \$this->scopeChildren = array();\n";
diff --git a/vendor/symfony/dependency-injection/Dumper/XmlDumper.php b/vendor/symfony/dependency-injection/Dumper/XmlDumper.php
index bd8e200..07aad3f 100644
--- a/vendor/symfony/dependency-injection/Dumper/XmlDumper.php
+++ b/vendor/symfony/dependency-injection/Dumper/XmlDumper.php
@@ -126,7 +126,10 @@ private function addService($definition, $id, \DOMElement $parent)
         if ($definition->getFactoryService(false)) {
             $service->setAttribute('factory-service', $definition->getFactoryService(false));
         }
-        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) {
+        if (!$definition->isShared()) {
+            $service->setAttribute('shared', 'false');
+        }
+        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope(false)) {
             $service->setAttribute('scope', $scope);
         }
         if (!$definition->isPublic()) {
@@ -142,11 +145,14 @@ private function addService($definition, $id, \DOMElement $parent)
             $service->setAttribute('lazy', 'true');
         }
         if (null !== $decorated = $definition->getDecoratedService()) {
-            list($decorated, $renamedId) = $decorated;
+            list($decorated, $renamedId, $priority) = $decorated;
             $service->setAttribute('decorates', $decorated);
             if (null !== $renamedId) {
                 $service->setAttribute('decoration-inner-name', $renamedId);
             }
+            if (0 !== $priority) {
+                $service->setAttribute('decoration-priority', $priority);
+            }
         }
 
         foreach ($definition->getTags() as $name => $tags) {
@@ -191,6 +197,24 @@ private function addService($definition, $id, \DOMElement $parent)
             $service->appendChild($factory);
         }
 
+        if ($definition->isDeprecated()) {
+            $deprecated = $this->document->createElement('deprecated');
+            $deprecated->appendChild($this->document->createTextNode($definition->getDeprecationMessage('%service_id%')));
+
+            $service->appendChild($deprecated);
+        }
+
+        if ($definition->isAutowired()) {
+            $service->setAttribute('autowire', 'true');
+        }
+
+        foreach ($definition->getAutowiringTypes() as $autowiringTypeValue) {
+            $autowiringType = $this->document->createElement('autowiring-type');
+            $autowiringType->appendChild($this->document->createTextNode($autowiringTypeValue));
+
+            $service->appendChild($autowiringType);
+        }
+
         if ($callable = $definition->getConfigurator()) {
             $configurator = $this->document->createElement('configurator');
 
@@ -283,7 +307,7 @@ private function convertParameters($parameters, $type, \DOMElement $parent, $key
                 } elseif ($behaviour == ContainerInterface::IGNORE_ON_INVALID_REFERENCE) {
                     $element->setAttribute('on-invalid', 'ignore');
                 }
-                if (!$value->isStrict()) {
+                if (!$value->isStrict(false)) {
                     $element->setAttribute('strict', 'false');
                 }
             } elseif ($value instanceof Definition) {
diff --git a/vendor/symfony/dependency-injection/Dumper/YamlDumper.php b/vendor/symfony/dependency-injection/Dumper/YamlDumper.php
index e8e108c..e44fc20 100644
--- a/vendor/symfony/dependency-injection/Dumper/YamlDumper.php
+++ b/vendor/symfony/dependency-injection/Dumper/YamlDumper.php
@@ -100,6 +100,22 @@ private function addService($id, $definition)
             $code .= sprintf("        synchronized: true\n");
         }
 
+        if ($definition->isDeprecated()) {
+            $code .= sprintf("        deprecated: %s\n", $definition->getDeprecationMessage('%service_id%'));
+        }
+
+        if ($definition->isAutowired()) {
+            $code .= "        autowire: true\n";
+        }
+
+        $autowiringTypesCode = '';
+        foreach ($definition->getAutowiringTypes() as $autowiringType) {
+            $autowiringTypesCode .= sprintf("            - %s\n", $this->dumper->dump($autowiringType));
+        }
+        if ($autowiringTypesCode) {
+            $code .= sprintf("        autowiring_types:\n%s", $autowiringTypesCode);
+        }
+
         if ($definition->getFactoryClass(false)) {
             $code .= sprintf("        factory_class: %s\n", $definition->getFactoryClass(false));
         }
@@ -128,16 +144,23 @@ private function addService($id, $definition)
             $code .= sprintf("        calls:\n%s\n", $this->dumper->dump($this->dumpValue($definition->getMethodCalls()), 1, 12));
         }
 
-        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) {
+        if (!$definition->isShared()) {
+            $code .= "        shared: false\n";
+        }
+
+        if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope(false)) {
             $code .= sprintf("        scope: %s\n", $scope);
         }
 
         if (null !== $decorated = $definition->getDecoratedService()) {
-            list($decorated, $renamedId) = $decorated;
+            list($decorated, $renamedId, $priority) = $decorated;
             $code .= sprintf("        decorates: %s\n", $decorated);
             if (null !== $renamedId) {
                 $code .= sprintf("        decoration_inner_name: %s\n", $renamedId);
             }
+            if (0 !== $priority) {
+                $code .= sprintf("        decoration_priority: %s\n", $priority);
+            }
         }
 
         if ($callable = $definition->getFactory()) {
diff --git a/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php b/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php
index e630a1e..4aa0059 100644
--- a/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php
+++ b/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php
@@ -16,6 +16,8 @@
  * for containers, allowing logic to be implemented based on a Container's state.
  *
  * @author Evan Villemez <evillemez@gmail.com>
+ *
+ * @deprecated since version 2.8, to be merged with ContainerInterface in 3.0.
  */
 interface IntrospectableContainerInterface extends ContainerInterface
 {
diff --git a/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php b/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php
new file mode 100644
index 0000000..ffb8853
--- /dev/null
+++ b/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection\Loader;
+
+use Symfony\Component\Config\Resource\DirectoryResource;
+
+/**
+ * DirectoryLoader is a recursive loader to go through directories.
+ *
+ * @author Sebastien Lavoie <seb@wemakecustom.com>
+ */
+class DirectoryLoader extends FileLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load($file, $type = null)
+    {
+        $file = rtrim($file, '/');
+        $path = $this->locator->locate($file);
+        $this->container->addResource(new DirectoryResource($path));
+
+        foreach (scandir($path) as $dir) {
+            if ('.' !== $dir[0]) {
+                if (is_dir($path.'/'.$dir)) {
+                    $dir .= '/'; // append / to allow recursion
+                }
+
+                $this->setCurrentDir($path);
+
+                $this->import($dir, null, false, $path);
+            }
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function supports($resource, $type = null)
+    {
+        if ('directory' === $type) {
+            return true;
+        }
+
+        return null === $type && is_string($resource) && '/' === substr($resource, -1);
+    }
+}
diff --git a/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php b/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
index ebe330b..7fb9897 100644
--- a/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
+++ b/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php
@@ -147,7 +147,7 @@ private function parseDefinition(\DOMElement $service, $file)
             $definition = new Definition();
         }
 
-        foreach (array('class', 'scope', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'lazy', 'abstract') as $key) {
+        foreach (array('class', 'shared', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'lazy', 'abstract') as $key) {
             if ($value = $service->getAttribute($key)) {
                 if (in_array($key, array('factory-class', 'factory-method', 'factory-service'))) {
                     @trigger_error(sprintf('The "%s" attribute of service "%s" in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use the "factory" element instead.', $key, (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED);
@@ -157,6 +157,20 @@ private function parseDefinition(\DOMElement $service, $file)
             }
         }
 
+        if ($value = $service->getAttribute('autowire')) {
+            $definition->setAutowired(XmlUtils::phpize($value));
+        }
+
+        if ($value = $service->getAttribute('scope')) {
+            $triggerDeprecation = 'request' !== (string) $service->getAttribute('id');
+
+            if ($triggerDeprecation) {
+                @trigger_error(sprintf('The "scope" attribute of service "%s" in file "%s" is deprecated since version 2.8 and will be removed in 3.0.', (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED);
+            }
+
+            $definition->setScope(XmlUtils::phpize($value), false);
+        }
+
         if ($value = $service->getAttribute('synchronized')) {
             $triggerDeprecation = 'request' !== (string) $service->getAttribute('id');
 
@@ -171,6 +185,10 @@ private function parseDefinition(\DOMElement $service, $file)
             $definition->setFile($files[0]->nodeValue);
         }
 
+        if ($deprecated = $this->getChildren($service, 'deprecated')) {
+            $definition->setDeprecated(true, $deprecated[0]->nodeValue);
+        }
+
         $definition->setArguments($this->getArgumentsAsPhp($service, 'argument'));
         $definition->setProperties($this->getArgumentsAsPhp($service, 'property'));
 
@@ -233,9 +251,14 @@ private function parseDefinition(\DOMElement $service, $file)
             $definition->addTag($tag->getAttribute('name'), $parameters);
         }
 
+        foreach ($this->getChildren($service, 'autowiring-type') as $type) {
+            $definition->addAutowiringType($type->textContent);
+        }
+
         if ($value = $service->getAttribute('decorates')) {
             $renameId = $service->hasAttribute('decoration-inner-name') ? $service->getAttribute('decoration-inner-name') : null;
-            $definition->setDecoratedService($value, $renameId);
+            $priority = $service->hasAttribute('decoration-priority') ? $service->getAttribute('decoration-priority') : 0;
+            $definition->setDecoratedService($value, $renameId, $priority);
         }
 
         return $definition;
diff --git a/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php b/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
index 5b3fb46..3039885 100644
--- a/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
+++ b/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php
@@ -164,8 +164,15 @@ private function parseDefinition($id, $service, $file)
             $definition->setClass($service['class']);
         }
 
+        if (isset($service['shared'])) {
+            $definition->setShared($service['shared']);
+        }
+
         if (isset($service['scope'])) {
-            $definition->setScope($service['scope']);
+            if ('request' !== $id) {
+                @trigger_error(sprintf('The "scope" key of service "%s" in file "%s" is deprecated since version 2.8 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED);
+            }
+            $definition->setScope($service['scope'], false);
         }
 
         if (isset($service['synthetic'])) {
@@ -189,6 +196,10 @@ private function parseDefinition($id, $service, $file)
             $definition->setAbstract($service['abstract']);
         }
 
+        if (array_key_exists('deprecated', $service)) {
+            $definition->setDeprecated(true, $service['deprecated']);
+        }
+
         if (isset($service['factory'])) {
             if (is_string($service['factory'])) {
                 if (strpos($service['factory'], ':') !== false && strpos($service['factory'], '::') === false) {
@@ -284,7 +295,30 @@ private function parseDefinition($id, $service, $file)
 
         if (isset($service['decorates'])) {
             $renameId = isset($service['decoration_inner_name']) ? $service['decoration_inner_name'] : null;
-            $definition->setDecoratedService($service['decorates'], $renameId);
+            $priority = isset($service['decoration_priority']) ? $service['decoration_priority'] : 0;
+            $definition->setDecoratedService($service['decorates'], $renameId, $priority);
+        }
+
+        if (isset($service['autowire'])) {
+            $definition->setAutowired($service['autowire']);
+        }
+
+        if (isset($service['autowiring_types'])) {
+            if (is_string($service['autowiring_types'])) {
+                $definition->addAutowiringType($service['autowiring_types']);
+            } else {
+                if (!is_array($service['autowiring_types'])) {
+                    throw new InvalidArgumentException(sprintf('Parameter "autowiring_types" must be a string or an array for service "%s" in %s. Check your YAML syntax.', $id, $file));
+                }
+
+                foreach ($service['autowiring_types'] as $autowiringType) {
+                    if (!is_string($autowiringType)) {
+                        throw new InvalidArgumentException(sprintf('A "autowiring_types" attribute must be of type string for service "%s" in %s. Check your YAML syntax.', $id, $file));
+                    }
+
+                    $definition->addAutowiringType($autowiringType);
+                }
+            }
         }
 
         $this->container->setDefinition($id, $definition);
diff --git a/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd b/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd
index ac2cba7..3241c43 100644
--- a/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd
+++ b/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd
@@ -81,12 +81,15 @@
       <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="configurator" type="callable" minOccurs="0" maxOccurs="1" />
       <xsd:element name="factory" type="callable" minOccurs="0" maxOccurs="1" />
+      <xsd:element name="deprecated" type="xsd:string" minOccurs="0" maxOccurs="1" />
       <xsd:element name="call" type="call" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="tag" type="tag" minOccurs="0" maxOccurs="unbounded" />
       <xsd:element name="property" type="property" minOccurs="0" maxOccurs="unbounded" />
+      <xsd:element name="autowiring-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
     </xsd:choice>
     <xsd:attribute name="id" type="xsd:string" />
     <xsd:attribute name="class" type="xsd:string" />
+    <xsd:attribute name="shared" type="boolean" />
     <xsd:attribute name="scope" type="xsd:string" />
     <xsd:attribute name="public" type="boolean" />
     <xsd:attribute name="synthetic" type="boolean" />
@@ -100,6 +103,8 @@
     <xsd:attribute name="parent" type="xsd:string" />
     <xsd:attribute name="decorates" type="xsd:string" />
     <xsd:attribute name="decoration-inner-name" type="xsd:string" />
+    <xsd:attribute name="decoration-priority" type="xsd:integer" />
+    <xsd:attribute name="autowire" type="boolean" />
   </xsd:complexType>
 
   <xsd:complexType name="tag">
diff --git a/vendor/symfony/dependency-injection/Reference.php b/vendor/symfony/dependency-injection/Reference.php
index 6a48249..572062b 100644
--- a/vendor/symfony/dependency-injection/Reference.php
+++ b/vendor/symfony/dependency-injection/Reference.php
@@ -25,6 +25,8 @@ class Reference
     /**
      * Constructor.
      *
+     * Note: The $strict parameter is deprecated since version 2.8 and will be removed in 3.0.
+     *
      * @param string $id              The service identifier
      * @param int    $invalidBehavior The behavior when the service does not exist
      * @param bool   $strict          Sets how this reference is validated
@@ -62,9 +64,15 @@ public function getInvalidBehavior()
      * Returns true when this Reference is strict.
      *
      * @return bool
+     *
+     * @deprecated since version 2.8, to be removed in 3.0.
      */
-    public function isStrict()
+    public function isStrict($triggerDeprecationError = true)
     {
+        if ($triggerDeprecationError) {
+            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
         return $this->strict;
     }
 }
diff --git a/vendor/symfony/dependency-injection/ResettableContainerInterface.php b/vendor/symfony/dependency-injection/ResettableContainerInterface.php
new file mode 100644
index 0000000..b74e676
--- /dev/null
+++ b/vendor/symfony/dependency-injection/ResettableContainerInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection;
+
+/**
+ * ResettableContainerInterface defines additional resetting functionality
+ * for containers, allowing to release shared services when the container is
+ * not needed anymore.
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+interface ResettableContainerInterface extends ContainerInterface
+{
+    /**
+     * Resets shared services from the container.
+     *
+     * The container is not intended to be used again after being reset in a normal workflow. This method is
+     * meant as a way to release references for ref-counting.
+     * A subsequent call to ContainerInterface::get will recreate a new instance of the shared service.
+     */
+    public function reset();
+}
diff --git a/vendor/symfony/dependency-injection/Scope.php b/vendor/symfony/dependency-injection/Scope.php
index 737fe26..b0b8ed6 100644
--- a/vendor/symfony/dependency-injection/Scope.php
+++ b/vendor/symfony/dependency-injection/Scope.php
@@ -15,6 +15,8 @@
  * Scope class.
  *
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ *
+ * @deprecated since version 2.8, to be removed in 3.0.
  */
 class Scope implements ScopeInterface
 {
diff --git a/vendor/symfony/dependency-injection/ScopeInterface.php b/vendor/symfony/dependency-injection/ScopeInterface.php
index ea55165..11b1097 100644
--- a/vendor/symfony/dependency-injection/ScopeInterface.php
+++ b/vendor/symfony/dependency-injection/ScopeInterface.php
@@ -15,6 +15,8 @@
  * Scope Interface.
  *
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ *
+ * @deprecated since version 2.8, to be removed in 3.0.
  */
 interface ScopeInterface
 {
diff --git a/vendor/symfony/dependency-injection/composer.json b/vendor/symfony/dependency-injection/composer.json
index 87ea6fd..619c9e6 100644
--- a/vendor/symfony/dependency-injection/composer.json
+++ b/vendor/symfony/dependency-injection/composer.json
@@ -19,9 +19,9 @@
         "php": ">=5.3.9"
     },
     "require-dev": {
-        "symfony/yaml": "~2.1",
-        "symfony/config": "~2.2",
-        "symfony/expression-language": "~2.6"
+        "symfony/yaml": "~2.1|~3.0.0",
+        "symfony/config": "~2.2|~3.0.0",
+        "symfony/expression-language": "~2.6|~3.0.0"
     },
     "conflict": {
         "symfony/expression-language": "<2.6"
@@ -32,12 +32,15 @@
         "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" }
+        "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/dom-crawler/composer.json b/vendor/symfony/dom-crawler/composer.json
index f8033c5..5ea57b2 100644
--- a/vendor/symfony/dom-crawler/composer.json
+++ b/vendor/symfony/dom-crawler/composer.json
@@ -25,7 +25,10 @@
         "symfony/css-selector": ""
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\DomCrawler\\": "" }
+        "psr-4": { "Symfony\\Component\\DomCrawler\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
diff --git a/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php b/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
index b92defe..6a02e9f 100644
--- a/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php
@@ -132,6 +132,16 @@ public function getListeners($eventName = null)
     }
 
     /**
+     * {@inheritdoc}
+     */
+    public function getListenerPriority($eventName, $listener)
+    {
+        $this->lazyLoad($eventName);
+
+        return parent::getListenerPriority($eventName, $listener);
+    }
+
+    /**
      * Adds a service as event subscriber.
      *
      * @param string $serviceId The service ID of the subscriber service
diff --git a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
index 7653ccf..35df816 100644
--- a/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
@@ -102,6 +102,14 @@ public function getListeners($eventName = null)
     /**
      * {@inheritdoc}
      */
+    public function getListenerPriority($eventName, $listener)
+    {
+        return $this->dispatcher->getListenerPriority($eventName, $listener);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
     public function hasListeners($eventName = null)
     {
         return $this->dispatcher->hasListeners($eventName);
@@ -186,6 +194,8 @@ public function getNotCalledListeners()
             }
         }
 
+        uasort($notCalled, array($this, 'sortListenersByPriority'));
+
         return $notCalled;
     }
 
@@ -285,6 +295,7 @@ private function getListenerInfo($listener, $eventName)
     {
         $info = array(
             'event' => $eventName,
+            'priority' => $this->getListenerPriority($eventName, $listener),
         );
         if ($listener instanceof \Closure) {
             $info += array(
@@ -332,4 +343,25 @@ private function getListenerInfo($listener, $eventName)
 
         return $info;
     }
+
+    private function sortListenersByPriority($a, $b)
+    {
+        if (is_int($a['priority']) && !is_int($b['priority'])) {
+            return 1;
+        }
+
+        if (!is_int($a['priority']) && is_int($b['priority'])) {
+            return -1;
+        }
+
+        if ($a['priority'] === $b['priority']) {
+            return 0;
+        }
+
+        if ($a['priority'] > $b['priority']) {
+            return -1;
+        }
+
+        return 1;
+    }
 }
diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php
index b54d07b..65c5cb6 100644
--- a/vendor/symfony/event-dispatcher/EventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/EventDispatcher.php
@@ -76,6 +76,29 @@ public function getListeners($eventName = null)
     }
 
     /**
+     * Gets the listener priority for a specific event.
+     *
+     * Returns null if the event or the listener does not exist.
+     *
+     * @param string   $eventName The name of the event
+     * @param callable $listener  The listener
+     *
+     * @return int|null The event listener priority
+     */
+    public function getListenerPriority($eventName, $listener)
+    {
+        if (!isset($this->listeners[$eventName])) {
+            return;
+        }
+
+        foreach ($this->listeners[$eventName] as $priority => $listeners) {
+            if (false !== ($key = array_search($listener, $listeners, true))) {
+                return $priority;
+            }
+        }
+    }
+
+    /**
      * {@inheritdoc}
      */
     public function hasListeners($eventName = null)
@@ -169,8 +192,6 @@ protected function doDispatch($listeners, $eventName, Event $event)
      */
     private function sortListeners($eventName)
     {
-        $this->sorted[$eventName] = array();
-
         krsort($this->listeners[$eventName]);
         $this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]);
     }
diff --git a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
index 7ef9ece..13e8572 100644
--- a/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
+++ b/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php
@@ -86,6 +86,14 @@ public function getListeners($eventName = null)
     /**
      * {@inheritdoc}
      */
+    public function getListenerPriority($eventName, $listener)
+    {
+        return $this->dispatcher->getListenerPriority($eventName, $listener);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
     public function hasListeners($eventName = null)
     {
         return $this->dispatcher->hasListeners($eventName);
diff --git a/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
index 2e4c3fd..0169ede 100644
--- a/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
+++ b/vendor/symfony/event-dispatcher/Tests/AbstractEventDispatcherTest.php
@@ -108,6 +108,20 @@ public function testGetAllListenersSortsByPriority()
         $this->assertSame($expected, $this->dispatcher->getListeners());
     }
 
+    public function testGetListenerPriority()
+    {
+        $listener1 = new TestEventListener();
+        $listener2 = new TestEventListener();
+
+        $this->dispatcher->addListener('pre.foo', $listener1, -10);
+        $this->dispatcher->addListener('pre.foo', $listener2);
+
+        $this->assertSame(-10, $this->dispatcher->getListenerPriority('pre.foo', $listener1));
+        $this->assertSame(0, $this->dispatcher->getListenerPriority('pre.foo', $listener2));
+        $this->assertNull($this->dispatcher->getListenerPriority('pre.bar', $listener2));
+        $this->assertNull($this->dispatcher->getListenerPriority('pre.foo', function () {}));
+    }
+
     public function testDispatch()
     {
         $this->dispatcher->addListener('pre.foo', array($this->listener, 'preFoo'));
diff --git a/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
index 6f2fbcb..18a4b3f 100644
--- a/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
+++ b/vendor/symfony/event-dispatcher/Tests/ContainerAwareEventDispatcherTest.php
@@ -92,6 +92,7 @@ public function testPreventDuplicateListenerService()
 
     /**
      * @expectedException \InvalidArgumentException
+     * @group legacy
      */
     public function testTriggerAListenerServiceOutOfScope()
     {
@@ -111,6 +112,9 @@ public function testTriggerAListenerServiceOutOfScope()
         $dispatcher->dispatch('onEvent');
     }
 
+    /**
+     * @group legacy
+     */
     public function testReEnteringAScope()
     {
         $event = new Event();
diff --git a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
index 4aa6226..1d4a8c8 100644
--- a/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
+++ b/vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php
@@ -25,7 +25,7 @@ public function testAddRemoveListener()
         $dispatcher = new EventDispatcher();
         $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
 
-        $tdispatcher->addListener('foo', $listener = function () {; });
+        $tdispatcher->addListener('foo', $listener = function () {});
         $listeners = $dispatcher->getListeners('foo');
         $this->assertCount(1, $listeners);
         $this->assertSame($listener, $listeners[0]);
@@ -39,7 +39,7 @@ public function testGetListeners()
         $dispatcher = new EventDispatcher();
         $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
 
-        $tdispatcher->addListener('foo', $listener = function () {; });
+        $tdispatcher->addListener('foo', $listener = function () {});
         $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo'));
     }
 
@@ -51,7 +51,7 @@ public function testHasListeners()
         $this->assertFalse($dispatcher->hasListeners('foo'));
         $this->assertFalse($tdispatcher->hasListeners('foo'));
 
-        $tdispatcher->addListener('foo', $listener = function () {; });
+        $tdispatcher->addListener('foo', $listener = function () {});
         $this->assertTrue($dispatcher->hasListeners('foo'));
         $this->assertTrue($tdispatcher->hasListeners('foo'));
     }
@@ -76,14 +76,14 @@ public function testGetCalledListeners()
     {
         $dispatcher = new EventDispatcher();
         $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
-        $tdispatcher->addListener('foo', $listener = function () {; });
+        $tdispatcher->addListener('foo', $listener = function () {});
 
         $this->assertEquals(array(), $tdispatcher->getCalledListeners());
-        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure')), $tdispatcher->getNotCalledListeners());
+        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => 0)), $tdispatcher->getNotCalledListeners());
 
         $tdispatcher->dispatch('foo');
 
-        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure')), $tdispatcher->getCalledListeners());
+        $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'type' => 'Closure', 'pretty' => 'closure', 'priority' => null)), $tdispatcher->getCalledListeners());
         $this->assertEquals(array(), $tdispatcher->getNotCalledListeners());
     }
 
@@ -107,8 +107,8 @@ public function testLogger()
 
         $dispatcher = new EventDispatcher();
         $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
-        $tdispatcher->addListener('foo', $listener1 = function () {; });
-        $tdispatcher->addListener('foo', $listener2 = function () {; });
+        $tdispatcher->addListener('foo', $listener1 = function () {});
+        $tdispatcher->addListener('foo', $listener2 = function () {});
 
         $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".');
         $logger->expects($this->at(1))->method('debug')->with('Notified event "foo" to listener "closure".');
@@ -123,7 +123,7 @@ public function testLoggerWithStoppedEvent()
         $dispatcher = new EventDispatcher();
         $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
         $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
-        $tdispatcher->addListener('foo', $listener2 = function () {; });
+        $tdispatcher->addListener('foo', $listener2 = function () {});
 
         $logger->expects($this->at(0))->method('debug')->with('Notified event "foo" to listener "closure".');
         $logger->expects($this->at(1))->method('debug')->with('Listener "closure" stopped propagation of the event "foo".');
diff --git a/vendor/symfony/event-dispatcher/composer.json b/vendor/symfony/event-dispatcher/composer.json
index 8a6a750..282b770 100644
--- a/vendor/symfony/event-dispatcher/composer.json
+++ b/vendor/symfony/event-dispatcher/composer.json
@@ -19,10 +19,10 @@
         "php": ">=5.3.9"
     },
     "require-dev": {
-        "symfony/dependency-injection": "~2.6",
-        "symfony/expression-language": "~2.6",
-        "symfony/config": "~2.0,>=2.0.5",
-        "symfony/stopwatch": "~2.3",
+        "symfony/dependency-injection": "~2.6|~3.0.0",
+        "symfony/expression-language": "~2.6|~3.0.0",
+        "symfony/config": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/stopwatch": "~2.3|~3.0.0",
         "psr/log": "~1.0"
     },
     "suggest": {
@@ -30,12 +30,15 @@
         "symfony/http-kernel": ""
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }
+        "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/http-foundation/CHANGELOG.md b/vendor/symfony/http-foundation/CHANGELOG.md
index dcdeb4e..9f48e82 100644
--- a/vendor/symfony/http-foundation/CHANGELOG.md
+++ b/vendor/symfony/http-foundation/CHANGELOG.md
@@ -1,6 +1,12 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * Finding deep items in `ParameterBag::get()` is deprecated since version 2.8 and
+   will be removed in 3.0.
+
 2.6.0
 -----
 
diff --git a/vendor/symfony/http-foundation/JsonResponse.php b/vendor/symfony/http-foundation/JsonResponse.php
index 5399d1b..0445a9a 100644
--- a/vendor/symfony/http-foundation/JsonResponse.php
+++ b/vendor/symfony/http-foundation/JsonResponse.php
@@ -142,7 +142,7 @@ public function setData($data = array())
         }
 
         if (JSON_ERROR_NONE !== json_last_error()) {
-            throw new \InvalidArgumentException($this->transformJsonError());
+            throw new \InvalidArgumentException(json_last_error_msg());
         }
 
         $this->data = $data;
@@ -196,31 +196,4 @@ protected function update()
 
         return $this->setContent($this->data);
     }
-
-    private function transformJsonError()
-    {
-        if (function_exists('json_last_error_msg')) {
-            return json_last_error_msg();
-        }
-
-        switch (json_last_error()) {
-            case JSON_ERROR_DEPTH:
-                return 'Maximum stack depth exceeded.';
-
-            case JSON_ERROR_STATE_MISMATCH:
-                return 'Underflow or the modes mismatch.';
-
-            case JSON_ERROR_CTRL_CHAR:
-                return 'Unexpected control character found.';
-
-            case JSON_ERROR_SYNTAX:
-                return 'Syntax error, malformed JSON.';
-
-            case JSON_ERROR_UTF8:
-                return 'Malformed UTF-8 characters, possibly incorrectly encoded.';
-
-            default:
-                return 'Unknown error.';
-        }
-    }
 }
diff --git a/vendor/symfony/http-foundation/ParameterBag.php b/vendor/symfony/http-foundation/ParameterBag.php
index ecc0de1..4560322 100644
--- a/vendor/symfony/http-foundation/ParameterBag.php
+++ b/vendor/symfony/http-foundation/ParameterBag.php
@@ -78,7 +78,9 @@ public function add(array $parameters = array())
     /**
      * Returns a parameter by name.
      *
-     * @param string $path    The key
+     * Note: Finding deep items is deprecated since version 2.8, to be removed in 3.0.
+     *
+     * @param string $key     The key
      * @param mixed  $default The default value if the parameter key does not exist
      * @param bool   $deep    If true, a path like foo[bar] will find deeper items
      *
@@ -86,21 +88,25 @@ public function add(array $parameters = array())
      *
      * @throws \InvalidArgumentException
      */
-    public function get($path, $default = null, $deep = false)
+    public function get($key, $default = null, $deep = false)
     {
-        if (!$deep || false === $pos = strpos($path, '[')) {
-            return array_key_exists($path, $this->parameters) ? $this->parameters[$path] : $default;
+        if ($deep) {
+            @trigger_error('Using paths to find deeper items in '.__METHOD__.' is deprecated since version 2.8 and will be removed in 3.0. Filter the returned value in your own code instead.', E_USER_DEPRECATED);
+        }
+
+        if (!$deep || false === $pos = strpos($key, '[')) {
+            return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
         }
 
-        $root = substr($path, 0, $pos);
+        $root = substr($key, 0, $pos);
         if (!array_key_exists($root, $this->parameters)) {
             return $default;
         }
 
         $value = $this->parameters[$root];
         $currentKey = null;
-        for ($i = $pos, $c = strlen($path); $i < $c; ++$i) {
-            $char = $path[$i];
+        for ($i = $pos, $c = strlen($key); $i < $c; ++$i) {
+            $char = $key[$i];
 
             if ('[' === $char) {
                 if (null !== $currentKey) {
@@ -172,7 +178,7 @@ public function remove($key)
      * Returns the alphabetic characters of the parameter value.
      *
      * @param string $key     The parameter key
-     * @param mixed  $default The default value if the parameter key does not exist
+     * @param string $default The default value if the parameter key does not exist
      * @param bool   $deep    If true, a path like foo[bar] will find deeper items
      *
      * @return string The filtered value
@@ -186,7 +192,7 @@ public function getAlpha($key, $default = '', $deep = false)
      * Returns the alphabetic characters and digits of the parameter value.
      *
      * @param string $key     The parameter key
-     * @param mixed  $default The default value if the parameter key does not exist
+     * @param string $default The default value if the parameter key does not exist
      * @param bool   $deep    If true, a path like foo[bar] will find deeper items
      *
      * @return string The filtered value
@@ -200,7 +206,7 @@ public function getAlnum($key, $default = '', $deep = false)
      * Returns the digits of the parameter value.
      *
      * @param string $key     The parameter key
-     * @param mixed  $default The default value if the parameter key does not exist
+     * @param string $default The default value if the parameter key does not exist
      * @param bool   $deep    If true, a path like foo[bar] will find deeper items
      *
      * @return string The filtered value
@@ -208,14 +214,14 @@ public function getAlnum($key, $default = '', $deep = false)
     public function getDigits($key, $default = '', $deep = false)
     {
         // we need to remove - and + because they're allowed in the filter
-        return str_replace(array('-', '+'), '', $this->filter($key, $default, $deep, FILTER_SANITIZE_NUMBER_INT));
+        return str_replace(array('-', '+'), '', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT, array(), $deep));
     }
 
     /**
      * Returns the parameter value converted to integer.
      *
      * @param string $key     The parameter key
-     * @param mixed  $default The default value if the parameter key does not exist
+     * @param int    $default The default value if the parameter key does not exist
      * @param bool   $deep    If true, a path like foo[bar] will find deeper items
      *
      * @return int The filtered value
@@ -236,7 +242,7 @@ public function getInt($key, $default = 0, $deep = false)
      */
     public function getBoolean($key, $default = false, $deep = false)
     {
-        return $this->filter($key, $default, $deep, FILTER_VALIDATE_BOOLEAN);
+        return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN, array(), $deep);
     }
 
     /**
@@ -244,16 +250,31 @@ public function getBoolean($key, $default = false, $deep = false)
      *
      * @param string $key     Key.
      * @param mixed  $default Default = null.
-     * @param bool   $deep    Default = false.
      * @param int    $filter  FILTER_* constant.
      * @param mixed  $options Filter options.
+     * @param bool   $deep    Default = false.
      *
      * @see http://php.net/manual/en/function.filter-var.php
      *
      * @return mixed
      */
-    public function filter($key, $default = null, $deep = false, $filter = FILTER_DEFAULT, $options = array())
+    public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = array(), $deep = false)
     {
+        static $filters = null;
+
+        if (null === $filters) {
+            foreach (filter_list() as $tmp) {
+                $filters[filter_id($tmp)] = 1;
+            }
+        }
+        if (is_bool($filter) || !isset($filters[$filter]) || is_array($deep)) {
+            @trigger_error('Passing the $deep boolean as 3rd argument to the '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Remove it altogether as the $deep argument will be removed in 3.0.', E_USER_ERROR);
+            $tmp = $deep;
+            $deep = $filter;
+            $filter = $options;
+            $options = $tmp;
+        }
+
         $value = $this->get($key, $default, $deep);
 
         // Always turn $options into an array - this allows filter_var option shortcuts.
diff --git a/vendor/symfony/http-foundation/README.md b/vendor/symfony/http-foundation/README.md
index 11ad6ee..a7dba39 100644
--- a/vendor/symfony/http-foundation/README.md
+++ b/vendor/symfony/http-foundation/README.md
@@ -34,18 +34,6 @@ $response->send();
 The Request and the Response classes have many other methods that implement
 the HTTP specification.
 
-Loading
--------
-
-If you are not using Composer but are using PHP 5.3.x, you must add the following to your autoloader:
-
-```php
-// SessionHandlerInterface
-if (!interface_exists('SessionHandlerInterface')) {
-    $loader->registerPrefixFallback(__DIR__.'/../vendor/symfony/src/Symfony/Component/HttpFoundation/Resources/stubs');
-}
-```
-
 Resources
 ---------
 
diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php
index ff8d411..de36953 100644
--- a/vendor/symfony/http-foundation/Request.php
+++ b/vendor/symfony/http-foundation/Request.php
@@ -714,6 +714,8 @@ public static function getHttpMethodParameterOverride()
      * It is better to explicitly get request parameters from the appropriate
      * public property instead (query, attributes, request).
      *
+     * Note: Finding deep items is deprecated since version 2.8, to be removed in 3.0.
+     *
      * @param string $key     the key
      * @param mixed  $default the default value
      * @param bool   $deep    is parameter deep in multidimensional array
@@ -722,6 +724,10 @@ public static function getHttpMethodParameterOverride()
      */
     public function get($key, $default = null, $deep = false)
     {
+        if ($deep) {
+            @trigger_error('Using paths to find deeper items in '.__METHOD__.' is deprecated since version 2.8 and will be removed in 3.0. Filter the returned value in your own code instead.', E_USER_DEPRECATED);
+        }
+
         if ($this !== $result = $this->query->get($key, $this, $deep)) {
             return $result;
         }
diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php
index cb706d5..c88fb6c 100644
--- a/vendor/symfony/http-foundation/Response.php
+++ b/vendor/symfony/http-foundation/Response.php
@@ -114,7 +114,7 @@ class Response
      *
      * The list of codes is complete according to the
      * {@link http://www.iana.org/assignments/http-status-codes/ Hypertext Transfer Protocol (HTTP) Status Code Registry}
-     * (last updated 2012-02-13).
+     * (last updated 2015-05-19).
      *
      * Unless otherwise noted, the status code is defined in RFC2616.
      *
@@ -140,7 +140,6 @@ class Response
         303 => 'See Other',
         304 => 'Not Modified',
         305 => 'Use Proxy',
-        306 => 'Reserved',
         307 => 'Temporary Redirect',
         308 => 'Permanent Redirect',    // RFC7238
         400 => 'Bad Request',
@@ -156,10 +155,10 @@ class Response
         410 => 'Gone',
         411 => 'Length Required',
         412 => 'Precondition Failed',
-        413 => 'Request Entity Too Large',
-        414 => 'Request-URI Too Long',
+        413 => 'Payload Too Large',
+        414 => 'URI Too Long',
         415 => 'Unsupported Media Type',
-        416 => 'Requested Range Not Satisfiable',
+        416 => 'Range Not Satisfiable',
         417 => 'Expectation Failed',
         418 => 'I\'m a teapot',                                               // RFC2324
         422 => 'Unprocessable Entity',                                        // RFC4918
@@ -198,9 +197,6 @@ public function __construct($content = '', $status = 200, $headers = array())
         $this->setContent($content);
         $this->setStatusCode($status);
         $this->setProtocolVersion('1.0');
-        if (!$this->headers->has('Date')) {
-            $this->setDate(\DateTime::createFromFormat('U', time(), new \DateTimeZone('UTC')));
-        }
     }
 
     /**
@@ -329,8 +325,9 @@ public function sendHeaders()
             return $this;
         }
 
-        // status
-        header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
+        if (!$this->headers->has('Date')) {
+            $this->setDate(\DateTime::createFromFormat('U', time()));
+        }
 
         // headers
         foreach ($this->headers->allPreserveCase() as $name => $values) {
@@ -339,6 +336,9 @@ public function sendHeaders()
             }
         }
 
+        // status
+        header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
+
         // cookies
         foreach ($this->headers->getCookies() as $cookie) {
             setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
@@ -455,7 +455,7 @@ public function setStatusCode($code, $text = null)
         }
 
         if (null === $text) {
-            $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : '';
+            $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : 'unknown status';
 
             return $this;
         }
@@ -608,7 +608,11 @@ public function mustRevalidate()
      */
     public function getDate()
     {
-        return $this->headers->getDate('Date', new \DateTime());
+        if (!$this->headers->has('Date')) {
+            $this->setDate(\DateTime::createFromFormat('U', time()));
+        }
+
+        return $this->headers->getDate('Date');
     }
 
     /**
diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
index fd03dc8..52e9900 100644
--- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
+++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php
@@ -101,11 +101,7 @@ public function __construct(array $options = array(), $handler = null, MetadataB
         session_cache_limiter(''); // disable by default because it's managed by HeaderBag (if used)
         ini_set('session.use_cookies', 1);
 
-        if (PHP_VERSION_ID >= 50400) {
-            session_register_shutdown();
-        } else {
-            register_shutdown_function('session_write_close');
-        }
+        session_register_shutdown();
 
         $this->setMetadataBag($metaBag);
         $this->setOptions($options);
diff --git a/vendor/symfony/http-foundation/composer.json b/vendor/symfony/http-foundation/composer.json
index 09f9679..55edbbf 100644
--- a/vendor/symfony/http-foundation/composer.json
+++ b/vendor/symfony/http-foundation/composer.json
@@ -16,19 +16,22 @@
         }
     ],
     "require": {
-        "php": ">=5.3.9"
+        "php": ">=5.3.9",
+        "symfony/polyfill-php54": "~1.0"
     },
     "require-dev": {
-        "symfony/expression-language": "~2.4"
+        "symfony/expression-language": "~2.4|~3.0.0"
     },
     "autoload": {
         "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" },
-        "classmap": [ "Resources/stubs" ]
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/http-kernel/Bundle/Bundle.php b/vendor/symfony/http-kernel/Bundle/Bundle.php
index ebec7ff..5dfc6ce 100644
--- a/vendor/symfony/http-kernel/Bundle/Bundle.php
+++ b/vendor/symfony/http-kernel/Bundle/Bundle.php
@@ -11,7 +11,7 @@
 
 namespace Symfony\Component\HttpKernel\Bundle;
 
-use Symfony\Component\DependencyInjection\ContainerAware;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\Container;
 use Symfony\Component\Console\Application;
@@ -24,8 +24,12 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-abstract class Bundle extends ContainerAware implements BundleInterface
+abstract class Bundle implements BundleInterface
 {
+    /**
+     * @var ContainerInterface
+     */
+    protected $container;
     protected $name;
     protected $extension;
     protected $path;
@@ -59,6 +63,16 @@ public function build(ContainerBuilder $container)
     }
 
     /**
+     * Sets the container.
+     *
+     * @param ContainerInterface|null $container A ContainerInterface instance or null
+     */
+    public function setContainer(ContainerInterface $container = null)
+    {
+        $this->container = $container;
+    }
+
+    /**
      * Returns the bundle's container extension.
      *
      * @return ExtensionInterface|null The container extension
@@ -68,17 +82,17 @@ public function build(ContainerBuilder $container)
     public function getContainerExtension()
     {
         if (null === $this->extension) {
-            $class = $this->getContainerExtensionClass();
-            if (class_exists($class)) {
-                $extension = new $class();
+            $extension = $this->createContainerExtension();
 
+            if (null !== $extension) {
                 if (!$extension instanceof ExtensionInterface) {
-                    throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', $class));
+                    throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', get_class($extension)));
                 }
 
                 // check naming convention
                 $basename = preg_replace('/Bundle$/', '', $this->getName());
                 $expectedAlias = Container::underscore($basename);
+
                 if ($expectedAlias != $extension->getAlias()) {
                     throw new \LogicException(sprintf(
                         'Users will expect the alias of the default extension of a bundle to be the underscored version of the bundle name ("%s"). You can override "Bundle::getContainerExtension()" if you want to use "%s" or another alias.',
@@ -200,4 +214,16 @@ protected function getContainerExtensionClass()
 
         return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
     }
+
+    /**
+     * Creates the bundle's container extension.
+     *
+     * @return ExtensionInterface|null
+     */
+    protected function createContainerExtension()
+    {
+        if (class_exists($class = $this->getContainerExtensionClass())) {
+            return new $class();
+        }
+    }
 }
diff --git a/vendor/symfony/http-kernel/CHANGELOG.md b/vendor/symfony/http-kernel/CHANGELOG.md
index ad27886..bab3aba 100644
--- a/vendor/symfony/http-kernel/CHANGELOG.md
+++ b/vendor/symfony/http-kernel/CHANGELOG.md
@@ -1,6 +1,11 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * deprecated `Profiler::import` and `Profiler::export`
+
 2.7.0
 -----
 
diff --git a/vendor/symfony/http-kernel/Config/EnvParametersResource.php b/vendor/symfony/http-kernel/Config/EnvParametersResource.php
index 5f54450..b4178a5 100644
--- a/vendor/symfony/http-kernel/Config/EnvParametersResource.php
+++ b/vendor/symfony/http-kernel/Config/EnvParametersResource.php
@@ -11,14 +11,14 @@
 
 namespace Symfony\Component\HttpKernel\Config;
 
-use Symfony\Component\Config\Resource\ResourceInterface;
+use Symfony\Component\Config\Resource\SelfCheckingResourceInterface;
 
 /**
  * EnvParametersResource represents resources stored in prefixed environment variables.
  *
  * @author Chris Wilkinson <chriswilkinson84@gmail.com>
  */
-class EnvParametersResource implements ResourceInterface, \Serializable
+class EnvParametersResource implements SelfCheckingResourceInterface, \Serializable
 {
     /**
      * @var string
diff --git a/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
new file mode 100644
index 0000000..b8405d5
--- /dev/null
+++ b/vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpKernel\DataCollector;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+
+/**
+ * AjaxDataCollector.
+ *
+ * @author Bart van den Burg <bart@burgov.nl>
+ */
+class AjaxDataCollector extends DataCollector
+{
+    public function collect(Request $request, Response $response, \Exception $exception = null)
+    {
+        // all collecting is done client side
+    }
+
+    public function getName()
+    {
+        return 'ajax';
+    }
+}
diff --git a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
index 4efe7cb..50dde02 100644
--- a/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
+++ b/vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php
@@ -25,11 +25,30 @@ class LazyLoadingFragmentHandler extends FragmentHandler
     private $container;
     private $rendererIds = array();
 
-    public function __construct(ContainerInterface $container, $debug = false, RequestStack $requestStack = null)
+    /**
+     * Constructor.
+     *
+     * RequestStack will become required in 3.0.
+     *
+     * @param ContainerInterface $container    A container
+     * @param RequestStack       $requestStack The Request stack that controls the lifecycle of requests
+     * @param bool               $debug        Whether the debug mode is enabled or not
+     */
+    public function __construct(ContainerInterface $container, $requestStack = null, $debug = false)
     {
         $this->container = $container;
 
-        parent::__construct(array(), $debug, $requestStack);
+        if ((null !== $requestStack && !$requestStack instanceof RequestStack) || $debug instanceof RequestStack) {
+            $tmp = $debug;
+            $debug = $requestStack;
+            $requestStack = func_num_args() < 3 ? null : $tmp;
+
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack to be given as second argument as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        } elseif (!$requestStack instanceof RequestStack) {
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        }
+
+        parent::__construct($requestStack, array(), $debug);
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/Event/PostResponseEvent.php b/vendor/symfony/http-kernel/Event/PostResponseEvent.php
index 5d4450b..2406fdd 100644
--- a/vendor/symfony/http-kernel/Event/PostResponseEvent.php
+++ b/vendor/symfony/http-kernel/Event/PostResponseEvent.php
@@ -12,53 +12,26 @@
 namespace Symfony\Component\HttpKernel\Event;
 
 use Symfony\Component\HttpKernel\HttpKernelInterface;
-use Symfony\Component\EventDispatcher\Event;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 
 /**
  * Allows to execute logic after a response was sent.
  *
+ * Since it's only triggered on master requests, the `getRequestType()` method
+ * will always return the value of `HttpKernelInterface::MASTER_REQUEST`.
+ *
  * @author Jordi Boggiano <j.boggiano@seld.be>
  */
-class PostResponseEvent extends Event
+class PostResponseEvent extends KernelEvent
 {
-    /**
-     * The kernel in which this event was thrown.
-     *
-     * @var HttpKernelInterface
-     */
-    private $kernel;
-
-    private $request;
-
     private $response;
 
     public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
     {
-        $this->kernel = $kernel;
-        $this->request = $request;
-        $this->response = $response;
-    }
+        parent::__construct($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
 
-    /**
-     * Returns the kernel in which this event was thrown.
-     *
-     * @return HttpKernelInterface
-     */
-    public function getKernel()
-    {
-        return $this->kernel;
-    }
-
-    /**
-     * Returns the request for which this event was thrown.
-     *
-     * @return Request
-     */
-    public function getRequest()
-    {
-        return $this->request;
+        $this->response = $response;
     }
 
     /**
diff --git a/vendor/symfony/http-kernel/EventListener/LocaleListener.php b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
index 564f6dc..0ff3a86 100644
--- a/vendor/symfony/http-kernel/EventListener/LocaleListener.php
+++ b/vendor/symfony/http-kernel/EventListener/LocaleListener.php
@@ -36,10 +36,36 @@ class LocaleListener implements EventSubscriberInterface
     private $requestStack;
 
     /**
+     * Constructor.
+     *
      * RequestStack will become required in 3.0.
+     *
+     * @param RequestStack                      $requestStack  A RequestStack instance
+     * @param string                            $defaultLocale The default locale
+     * @param RequestContextAwareInterface|null $router        The router
+     *
+     * @throws \InvalidArgumentException
      */
-    public function __construct($defaultLocale = 'en', RequestContextAwareInterface $router = null, RequestStack $requestStack = null)
+    public function __construct($requestStack = null, $defaultLocale = 'en', $router = null)
     {
+        if ((null !== $requestStack && !$requestStack instanceof RequestStack) || $defaultLocale instanceof RequestContextAwareInterface || $router instanceof RequestStack) {
+            $tmp = $router;
+            $router = func_num_args() < 2 ? null : $defaultLocale;
+            $defaultLocale = $requestStack;
+            $requestStack = func_num_args() < 3 ? null : $tmp;
+
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack to be given as first argument as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        } elseif (!$requestStack instanceof RequestStack) {
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        }
+
+        if (null !== $requestStack && !$requestStack instanceof RequestStack) {
+            throw new \InvalidArgumentException('RequestStack instance expected.');
+        }
+        if (null !== $router && !$router instanceof RequestContextAwareInterface) {
+            throw new \InvalidArgumentException('Router must implement RequestContextAwareInterface.');
+        }
+
         $this->defaultLocale = $defaultLocale;
         $this->requestStack = $requestStack;
         $this->router = $router;
diff --git a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
index 06a5bbf..f73f325 100644
--- a/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
+++ b/vendor/symfony/http-kernel/EventListener/ProfilerListener.php
@@ -42,18 +42,30 @@ class ProfilerListener implements EventSubscriberInterface
      * Constructor.
      *
      * @param Profiler                     $profiler           A Profiler instance
+     * @param RequestStack                 $requestStack       A RequestStack instance
      * @param RequestMatcherInterface|null $matcher            A RequestMatcher instance
      * @param bool                         $onlyException      true if the profiler only collects data when an exception occurs, false otherwise
      * @param bool                         $onlyMasterRequests true if the profiler only collects data when the request is a master request, false otherwise
-     * @param RequestStack|null            $requestStack       A RequestStack instance
      */
-    public function __construct(Profiler $profiler, RequestMatcherInterface $matcher = null, $onlyException = false, $onlyMasterRequests = false, RequestStack $requestStack = null)
+    public function __construct(Profiler $profiler, $requestStack = null, $matcher = null, $onlyException = false, $onlyMasterRequests = false)
     {
-        if (null === $requestStack) {
-            // Prevent the deprecation notice to be triggered all the time.
-            // The onKernelRequest() method fires some logic only when the
-            // RequestStack instance is not provided as a dependency.
-            @trigger_error('Since version 2.4, the '.__METHOD__.' method must accept a RequestStack instance to get the request instead of using the '.__CLASS__.'::onKernelRequest method that will be removed in 3.0.', E_USER_DEPRECATED);
+        if ($requestStack instanceof RequestMatcherInterface || (null !== $matcher && !$matcher instanceof RequestMatcherInterface) || $onlyMasterRequests instanceof RequestStack) {
+            $tmp = $onlyMasterRequests;
+            $onlyMasterRequests = $onlyException;
+            $onlyException = $matcher;
+            $matcher = $requestStack;
+            $requestStack = func_num_args() < 5 ? null : $tmp;
+
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack to be given as second argument as '.__CLASS__.'::onKernelRequest method will be removed in 3.0.', E_USER_DEPRECATED);
+        } elseif (!$requestStack instanceof RequestStack) {
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::onKernelRequest method will be removed in 3.0.', E_USER_DEPRECATED);
+        }
+
+        if (null !== $requestStack && !$requestStack instanceof RequestStack) {
+            throw new \InvalidArgumentException('RequestStack instance expected.');
+        }
+        if (null !== $matcher && !$matcher instanceof RequestMatcherInterface) {
+            throw new \InvalidArgumentException('Matcher must implement RequestMatcherInterface.');
         }
 
         $this->profiler = $profiler;
diff --git a/vendor/symfony/http-kernel/EventListener/RouterListener.php b/vendor/symfony/http-kernel/EventListener/RouterListener.php
index 297aab6..761e591 100644
--- a/vendor/symfony/http-kernel/EventListener/RouterListener.php
+++ b/vendor/symfony/http-kernel/EventListener/RouterListener.php
@@ -51,14 +51,35 @@ class RouterListener implements EventSubscriberInterface
      * RequestStack will become required in 3.0.
      *
      * @param UrlMatcherInterface|RequestMatcherInterface $matcher      The Url or Request matcher
+     * @param RequestStack                                $requestStack A RequestStack instance
      * @param RequestContext|null                         $context      The RequestContext (can be null when $matcher implements RequestContextAwareInterface)
      * @param LoggerInterface|null                        $logger       The logger
-     * @param RequestStack|null                           $requestStack A RequestStack instance
      *
      * @throws \InvalidArgumentException
      */
-    public function __construct($matcher, RequestContext $context = null, LoggerInterface $logger = null, RequestStack $requestStack = null)
+    public function __construct($matcher, $requestStack = null, $context = null, $logger = null)
     {
+        if ($requestStack instanceof RequestContext || $context instanceof LoggerInterface || $logger instanceof RequestStack) {
+            $tmp = $requestStack;
+            $requestStack = $logger;
+            $logger = $context;
+            $context = $tmp;
+
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack to be given as second argument as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        } elseif (!$requestStack instanceof RequestStack) {
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        }
+
+        if (null !== $requestStack && !$requestStack instanceof RequestStack) {
+            throw new \InvalidArgumentException('RequestStack instance expected.');
+        }
+        if (null !== $context && !$context instanceof RequestContext) {
+            throw new \InvalidArgumentException('RequestContext instance expected.');
+        }
+        if (null !== $logger && !$logger instanceof LoggerInterface) {
+            throw new \InvalidArgumentException('Logger must implement LoggerInterface.');
+        }
+
         if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) {
             throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.');
         }
@@ -67,10 +88,6 @@ public function __construct($matcher, RequestContext $context = null, LoggerInte
             throw new \InvalidArgumentException('You must either pass a RequestContext or the matcher must implement RequestContextAwareInterface.');
         }
 
-        if (!$requestStack instanceof RequestStack) {
-            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
-        }
-
         $this->matcher = $matcher;
         $this->context = $context ?: $matcher->getContext();
         $this->requestStack = $requestStack;
diff --git a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
index 774870a..dff3773 100644
--- a/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
+++ b/vendor/symfony/http-kernel/Fragment/FragmentHandler.php
@@ -44,12 +44,30 @@ class FragmentHandler
      *
      * RequestStack will become required in 3.0.
      *
+     * @param RequestStack                $requestStack The Request stack that controls the lifecycle of requests
      * @param FragmentRendererInterface[] $renderers    An array of FragmentRendererInterface instances
      * @param bool                        $debug        Whether the debug mode is enabled or not
-     * @param RequestStack|null           $requestStack The Request stack that controls the lifecycle of requests
      */
-    public function __construct(array $renderers = array(), $debug = false, RequestStack $requestStack = null)
+    public function __construct($requestStack = null, $renderers = array(), $debug = false)
     {
+        if (is_array($requestStack)) {
+            $tmp = $debug;
+            $debug = func_num_args() < 2 ? false : $renderers;
+            $renderers = $requestStack;
+            $requestStack = func_num_args() < 3 ? null : $tmp;
+
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack to be given as first argument as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        } elseif (!$requestStack instanceof RequestStack) {
+            @trigger_error('The '.__METHOD__.' method now requires a RequestStack instance as '.__CLASS__.'::setRequest method will not be supported anymore in 3.0.', E_USER_DEPRECATED);
+        }
+
+        if (null !== $requestStack && !$requestStack instanceof RequestStack) {
+            throw new \InvalidArgumentException('RequestStack instance expected.');
+        }
+        if (!is_array($renderers)) {
+            throw new \InvalidArgumentException('Renderers must be an array.');
+        }
+
         $this->requestStack = $requestStack;
         foreach ($renderers as $renderer) {
             $this->addRenderer($renderer);
diff --git a/vendor/symfony/http-kernel/HttpCache/Store.php b/vendor/symfony/http-kernel/HttpCache/Store.php
index 044d14e..463caa0 100644
--- a/vendor/symfony/http-kernel/HttpCache/Store.php
+++ b/vendor/symfony/http-kernel/HttpCache/Store.php
@@ -32,12 +32,16 @@ class Store implements StoreInterface
      * Constructor.
      *
      * @param string $root The path to the cache directory
+     *
+     * @throws \RuntimeException
      */
     public function __construct($root)
     {
         $this->root = $root;
         if (!is_dir($this->root)) {
-            mkdir($this->root, 0777, true);
+            if (false === @mkdir($this->root, 0777, true) && !is_dir($this->root)) {
+                throw new \RuntimeException(sprintf('Unable to create the store directory (%s).', $this->root));
+            }
         }
         $this->keyCache = new \SplObjectStorage();
         $this->locks = array();
@@ -74,7 +78,7 @@ public function cleanup()
     public function lock(Request $request)
     {
         $path = $this->getPath($this->getCacheKey($request).'.lck');
-        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) {
+        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true) && !is_dir(dirname($path))) {
             return false;
         }
 
@@ -106,7 +110,10 @@ public function unlock(Request $request)
 
     public function isLocked(Request $request)
     {
-        return is_file($this->getPath($this->getCacheKey($request).'.lck'));
+        $path = $this->getPath($this->getCacheKey($request).'.lck');
+        clearstatcache(true, $path);
+
+        return is_file($path);
     }
 
     /**
@@ -338,7 +345,7 @@ private function load($key)
     private function save($key, $data)
     {
         $path = $this->getPath($key);
-        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true)) {
+        if (!is_dir(dirname($path)) && false === @mkdir(dirname($path), 0777, true) && !is_dir(dirname($path))) {
             return false;
         }
 
diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php
index a02dcd9..c53d4f4 100644
--- a/vendor/symfony/http-kernel/Kernel.php
+++ b/vendor/symfony/http-kernel/Kernel.php
@@ -21,6 +21,7 @@
 use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
 use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
 use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
+use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
 use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
@@ -58,11 +59,11 @@
     protected $startTime;
     protected $loadClassCache;
 
-    const VERSION = '2.7.6';
-    const VERSION_ID = 20706;
+    const VERSION = '2.8.0';
+    const VERSION_ID = 20800;
     const MAJOR_VERSION = 2;
-    const MINOR_VERSION = 7;
-    const RELEASE_VERSION = 6;
+    const MINOR_VERSION = 8;
+    const RELEASE_VERSION = 0;
     const EXTRA_VERSION = '';
 
     const END_OF_MAINTENANCE = '05/2018';
@@ -685,6 +686,7 @@ protected function getContainerLoader(ContainerInterface $container)
             new YamlFileLoader($container, $locator),
             new IniFileLoader($container, $locator),
             new PhpFileLoader($container, $locator),
+            new DirectoryLoader($container, $locator),
             new ClosureLoader($container),
         ));
 
diff --git a/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php
index c6395bd..3eb6919 100644
--- a/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/BaseMemcacheProfilerStorage.php
@@ -11,10 +11,15 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\BaseMemcacheProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * Base Memcache storage for profiling information in a Memcache.
  *
  * @author Andrej Hudec <pulzarraider@gmail.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 abstract class BaseMemcacheProfilerStorage implements ProfilerStorageInterface
 {
diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
index 581ab64..29da4ab 100644
--- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php
@@ -41,8 +41,8 @@ public function __construct($dsn)
         }
         $this->folder = substr($dsn, 5);
 
-        if (!is_dir($this->folder)) {
-            mkdir($this->folder, 0777, true);
+        if (!is_dir($this->folder) && false === @mkdir($this->folder, 0777, true) && !is_dir($this->folder)) {
+            throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $this->folder));
         }
     }
 
@@ -128,6 +128,8 @@ public function read($token)
 
     /**
      * {@inheritdoc}
+     *
+     * @throws \RuntimeException
      */
     public function write(Profile $profile)
     {
@@ -137,8 +139,8 @@ public function write(Profile $profile)
         if (!$profileIndexed) {
             // Create directory
             $dir = dirname($file);
-            if (!is_dir($dir)) {
-                mkdir($dir, 0777, true);
+            if (!is_dir($dir) && false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
+                throw new \RuntimeException(sprintf('Unable to create the storage directory (%s).', $dir));
             }
         }
 
diff --git a/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php
index 2727405..997c0dd 100644
--- a/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/MemcacheProfilerStorage.php
@@ -11,10 +11,15 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\MemcacheProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * Memcache Profiler Storage.
  *
  * @author Andrej Hudec <pulzarraider@gmail.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 class MemcacheProfilerStorage extends BaseMemcacheProfilerStorage
 {
diff --git a/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php
index 0c57373..edf6ff1 100644
--- a/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/MemcachedProfilerStorage.php
@@ -11,10 +11,15 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\MemcachedProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * Memcached Profiler Storage.
  *
  * @author Andrej Hudec <pulzarraider@gmail.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 class MemcachedProfilerStorage extends BaseMemcacheProfilerStorage
 {
diff --git a/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php
index f35a7f7..fddc87e 100644
--- a/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/MongoDbProfilerStorage.php
@@ -11,6 +11,12 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\MongoDbProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
+/**
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
+ */
 class MongoDbProfilerStorage implements ProfilerStorageInterface
 {
     protected $dsn;
diff --git a/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php
index 92e8a1b..45d9cff 100644
--- a/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/MysqlProfilerStorage.php
@@ -11,10 +11,15 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\MysqlProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * A ProfilerStorage for Mysql.
  *
  * @author Jan Schumann <js@schumann-it.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 class MysqlProfilerStorage extends PdoProfilerStorage
 {
diff --git a/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php
index 48f813f..4294c09 100644
--- a/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/PdoProfilerStorage.php
@@ -11,11 +11,16 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\PdoProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * Base PDO storage for profiling information in a PDO database.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  * @author Jan Schumann <js@schumann-it.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 abstract class PdoProfilerStorage implements ProfilerStorageInterface
 {
diff --git a/vendor/symfony/http-kernel/Profiler/Profiler.php b/vendor/symfony/http-kernel/Profiler/Profiler.php
index 864f624..378bf5d 100644
--- a/vendor/symfony/http-kernel/Profiler/Profiler.php
+++ b/vendor/symfony/http-kernel/Profiler/Profiler.php
@@ -137,9 +137,13 @@ public function purge()
      * @param Profile $profile A Profile instance
      *
      * @return string The exported data
+     *
+     * @deprecated since Symfony 2.8, to be removed in 3.0.
      */
     public function export(Profile $profile)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+
         return base64_encode(serialize($profile));
     }
 
@@ -149,9 +153,13 @@ public function export(Profile $profile)
      * @param string $data A data string as exported by the export() method
      *
      * @return Profile A Profile instance
+     *
+     * @deprecated since Symfony 2.8, to be removed in 3.0.
      */
     public function import($data)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
+
         $profile = unserialize(base64_decode($data));
 
         if ($this->storage->read($profile->getToken())) {
diff --git a/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php
index b0e14ea..2568e3b 100644
--- a/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/RedisProfilerStorage.php
@@ -11,11 +11,16 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\RedisProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * RedisProfilerStorage stores profiling information in Redis.
  *
  * @author Andrej Hudec <pulzarraider@gmail.com>
  * @author Stephane PY <py.stephane1@gmail.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 class RedisProfilerStorage implements ProfilerStorageInterface
 {
diff --git a/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php
index 4a996fd..2f78864 100644
--- a/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php
+++ b/vendor/symfony/http-kernel/Profiler/SqliteProfilerStorage.php
@@ -11,10 +11,15 @@
 
 namespace Symfony\Component\HttpKernel\Profiler;
 
+@trigger_error('The '.__NAMESPACE__.'\SqliteProfilerStorage class is deprecated since Symfony 2.8 and will be removed in 3.0. Use FileProfilerStorage instead.', E_USER_DEPRECATED);
+
 /**
  * SqliteProfilerStorage stores profiling information in a SQLite database.
  *
  * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @deprecated Deprecated since Symfony 2.8, to be removed in Symfony 3.0.
+ *             Use {@link FileProfilerStorage} instead.
  */
 class SqliteProfilerStorage extends PdoProfilerStorage
 {
diff --git a/vendor/symfony/http-kernel/composer.json b/vendor/symfony/http-kernel/composer.json
index 623d732..d0e92d5 100644
--- a/vendor/symfony/http-kernel/composer.json
+++ b/vendor/symfony/http-kernel/composer.json
@@ -17,27 +17,27 @@
     ],
     "require": {
         "php": ">=5.3.9",
-        "symfony/event-dispatcher": "~2.6,>=2.6.7",
-        "symfony/http-foundation": "~2.5,>=2.5.4",
+        "symfony/event-dispatcher": "~2.6,>=2.6.7|~3.0.0",
+        "symfony/http-foundation": "~2.5,>=2.5.4|~3.0.0",
         "symfony/debug": "~2.6,>=2.6.2",
         "psr/log": "~1.0"
     },
     "require-dev": {
-        "symfony/browser-kit": "~2.3",
-        "symfony/class-loader": "~2.1",
-        "symfony/config": "~2.7",
-        "symfony/console": "~2.3",
-        "symfony/css-selector": "~2.0,>=2.0.5",
-        "symfony/dependency-injection": "~2.2",
-        "symfony/dom-crawler": "~2.0,>=2.0.5",
-        "symfony/expression-language": "~2.4",
-        "symfony/finder": "~2.0,>=2.0.5",
-        "symfony/process": "~2.0,>=2.0.5",
-        "symfony/routing": "~2.2",
-        "symfony/stopwatch": "~2.3",
-        "symfony/templating": "~2.2",
-        "symfony/translation": "~2.0,>=2.0.5",
-        "symfony/var-dumper": "~2.6"
+        "symfony/browser-kit": "~2.3|~3.0.0",
+        "symfony/class-loader": "~2.1|~3.0.0",
+        "symfony/config": "~2.8",
+        "symfony/console": "~2.3|~3.0.0",
+        "symfony/css-selector": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/dependency-injection": "~2.8|~3.0.0",
+        "symfony/dom-crawler": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/expression-language": "~2.4|~3.0.0",
+        "symfony/finder": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/process": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/routing": "~2.8|~3.0.0",
+        "symfony/stopwatch": "~2.3|~3.0.0",
+        "symfony/templating": "~2.2|~3.0.0",
+        "symfony/translation": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/var-dumper": "~2.6|~3.0.0"
     },
     "conflict": {
         "symfony/config": "<2.7"
@@ -52,12 +52,15 @@
         "symfony/var-dumper": ""
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\HttpKernel\\": "" }
+        "psr-4": { "Symfony\\Component\\HttpKernel\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/http-kernel/phpunit.xml.dist b/vendor/symfony/http-kernel/phpunit.xml.dist
index 1314966..17c4893 100644
--- a/vendor/symfony/http-kernel/phpunit.xml.dist
+++ b/vendor/symfony/http-kernel/phpunit.xml.dist
@@ -25,4 +25,14 @@
             </exclude>
         </whitelist>
     </filter>
+
+    <listeners>
+        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener">
+            <arguments>
+                <array>
+                    <element><string>Symfony\Component\HttpFoundation</string></element>
+                </array>
+            </arguments>
+        </listener>
+    </listeners>
 </phpunit>
diff --git a/vendor/symfony/polyfill-mbstring/LICENSE b/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 0000000..ef1cde9
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2015 Fabien Potencier
+
+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/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 0000000..31f678b
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,604 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Mbstring;
+
+/**
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
+ *
+ * Implemented:
+ * - mb_convert_encoding     - Convert character encoding
+ * - mb_convert_variables    - Convert character code in variable(s)
+ * - mb_decode_mimeheader    - Decode string in MIME header field
+ * - mb_encode_mimeheader    - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
+ * - mb_convert_case         - Perform case folding on a string
+ * - mb_get_info             - Get internal settings of mbstring
+ * - mb_http_input           - Detect HTTP input character encoding
+ * - mb_http_output          - Set/Get HTTP output character encoding
+ * - mb_internal_encoding    - Set/Get internal character encoding
+ * - mb_list_encodings       - Returns an array of all supported encodings
+ * - mb_output_handler       - Callback function converts character encoding in output buffer
+ * - mb_strlen               - Get string length
+ * - mb_strpos               - Find position of first occurrence of string in a string
+ * - mb_strrpos              - Find position of last occurrence of a string in a string
+ * - mb_strtolower           - Make a string lowercase
+ * - mb_strtoupper           - Make a string uppercase
+ * - mb_substitute_character - Set/Get substitution character
+ * - mb_substr               - Get part of string
+ * - mb_stripos              - Finds position of first occurrence of a string within another, case insensitive
+ * - mb_stristr              - Finds first occurrence of a string within another, case insensitive
+ * - mb_strrchr              - Finds the last occurrence of a character in a string within another
+ * - mb_strrichr             - Finds the last occurrence of a character in a string within another, case insensitive
+ * - mb_strripos             - Finds position of last occurrence of a string within another, case insensitive
+ * - mb_strstr               - Finds first occurrence of a string within anothers
+ * - mb_strwidth             - Return width of string
+ * - mb_substr_count         - Count the number of substring occurrences
+ *
+ * Not implemented:
+ * - mb_convert_kana         - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
+ * - mb_ereg_*               - Regular expression with multibyte support
+ * - mb_parse_str            - Parse GET/POST/COOKIE data and set global variable
+ * - mb_preferred_mime_name  - Get MIME charset string
+ * - mb_regex_encoding       - Returns current encoding for multibyte regex as string
+ * - mb_regex_set_options    - Set/Get the default options for mbregex functions
+ * - mb_send_mail            - Send encoded mail
+ * - mb_split                - Split multibyte string using regular expression
+ * - mb_strcut               - Get part of string
+ * - mb_strimwidth           - Get truncated string with specified width
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Mbstring
+{
+    const MB_CASE_FOLD = PHP_INT_MAX;
+
+    private static $encodingList = array('ASCII', 'UTF-8');
+    private static $language = 'neutral';
+    private static $internalEncoding = 'UTF-8';
+    private static $caseFold = array(
+        array('µ','ſ',"\xCD\x85",'ς',"\xCF\x90","\xCF\x91","\xCF\x95","\xCF\x96","\xCF\xB0","\xCF\xB1","\xCF\xB5","\xE1\xBA\x9B","\xE1\xBE\xBE"),
+        array('μ','s','ι',       'σ','β',       'θ',       'φ',       'π',       'κ',       'ρ',       'ε',       "\xE1\xB9\xA1",'ι'),
+    );
+
+    public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+    {
+        if (is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
+            $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
+        } else {
+            $fromEncoding = self::getEncoding($fromEncoding);
+        }
+
+        $toEncoding = self::getEncoding($toEncoding);
+
+        if ('BASE64' === $fromEncoding) {
+            $s = base64_decode($s);
+            $fromEncoding = $toEncoding;
+        }
+
+        if ('BASE64' === $toEncoding) {
+            return base64_encode($s);
+        }
+
+        if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
+            if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
+                $fromEncoding = 'Windows-1252';
+            }
+            if ('UTF-8' !== $fromEncoding) {
+                $s = iconv($fromEncoding, 'UTF-8', $s);
+            }
+
+            return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
+        }
+
+        if ('HTML-ENTITIES' === $fromEncoding) {
+            $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
+            $fromEncoding = 'UTF-8';
+        }
+
+        return iconv($fromEncoding, $toEncoding, $s);
+    }
+
+    public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
+    {
+        $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
+
+        $ok = true;
+        array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+            if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
+                $ok = false;
+            }
+        });
+
+        return $ok ? $fromEncoding : false;
+    }
+
+    public static function mb_decode_mimeheader($s)
+    {
+        return iconv_mime_decode($s, 2, self::$internalEncoding);
+    }
+
+    public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
+    {
+        trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
+    }
+
+    public static function mb_convert_case($s, $mode, $encoding = null)
+    {
+        if ('' === $s .= '') {
+            return '';
+        }
+
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $encoding) {
+            $encoding = null;
+        } else {
+            $s = iconv($encoding, 'UTF-8', $s);
+        }
+
+        if (MB_CASE_TITLE == $mode) {
+            $s = preg_replace_callback('/\b\p{Ll}/u', array(__CLASS__, 'title_case_upper'), $s);
+            $s = preg_replace_callback('/\B[\p{Lu}\p{Lt}]+/u', array(__CLASS__, 'title_case_lower'), $s);
+        } else {
+            if (MB_CASE_UPPER == $mode) {
+                static $upper = null;
+                if (null === $upper) {
+                    $upper = self::getData('upperCase');
+                }
+                $map = $upper;
+            } else {
+                if (self::MB_CASE_FOLD === $mode) {
+                    $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
+                }
+
+                static $lower = null;
+                if (null === $lower) {
+                    $lower = self::getData('lowerCase');
+                }
+                $map = $lower;
+            }
+
+            static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
+
+            $i = 0;
+            $len = strlen($s);
+
+            while ($i < $len) {
+                $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+                $uchr = substr($s, $i, $ulen);
+                $i += $ulen;
+
+                if (isset($map[$uchr])) {
+                    $uchr = $map[$uchr];
+                    $nlen = strlen($uchr);
+
+                    if ($nlen == $ulen) {
+                        $nlen = $i;
+                        do {
+                            $s[--$nlen] = $uchr[--$ulen];
+                        } while ($ulen);
+                    } else {
+                        $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
+                        $len += $nlen - $ulen;
+                        $i   += $nlen - $ulen;
+                    }
+                }
+            }
+        }
+
+        if (null === $encoding) {
+            return $s;
+        }
+
+        return iconv('UTF-8', $encoding, $s);
+    }
+
+    public static function mb_internal_encoding($encoding = null)
+    {
+        if (null === $encoding) {
+            return self::$internalEncoding;
+        }
+
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
+            self::$internalEncoding = $encoding;
+
+            return true;
+        }
+
+        return false;
+    }
+
+    public static function mb_language($lang = null)
+    {
+        if (null === $lang) {
+            return self::$language;
+        }
+
+        switch ($lang = strtolower($lang)) {
+            case 'uni':
+            case 'neutral':
+                self::$language = $lang;
+
+                return true;
+        }
+
+        return false;
+    }
+
+    public static function mb_list_encodings()
+    {
+        return array('UTF-8');
+    }
+
+    public static function mb_encoding_aliases($encoding)
+    {
+        switch (strtoupper($encoding)) {
+            case 'UTF8':
+            case 'UTF-8':
+                return array('utf8');
+        }
+
+        return false;
+    }
+
+    public static function mb_check_encoding($var = null, $encoding = null)
+    {
+        if (null === $encoding) {
+            if (null === $var) {
+                return false;
+            }
+            $encoding = self::$internalEncoding;
+        }
+
+        return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
+    }
+
+    public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
+    {
+        if (null === $encodingList) {
+            $encodingList = self::$encodingList;
+        } else {
+            if (!is_array($encodingList)) {
+                $encodingList = array_map('trim', explode(',', $encodingList));
+            }
+            $encodingList = array_map('strtoupper', $encodingList);
+        }
+
+        foreach ($encodingList as $enc) {
+            switch ($enc) {
+                case 'ASCII':
+                    if (!preg_match('/[\x80-\xFF]/', $str)) {
+                        return $enc;
+                    }
+                    break;
+
+                case 'UTF8':
+                case 'UTF-8':
+                    if (preg_match('//u', $str)) {
+                        return 'UTF-8';
+                    }
+                    break;
+
+                default:
+                    if (0 === strncmp($enc, 'ISO-8859-', 9)) {
+                        return $enc;
+                    }
+            }
+        }
+
+        return false;
+    }
+
+    public static function mb_detect_order($encodingList = null)
+    {
+        if (null === $encodingList) {
+            return self::$encodingList;
+        }
+
+        if (!is_array($encodingList)) {
+            $encodingList = array_map('trim', explode(',', $encodingList));
+        }
+        $encodingList = array_map('strtoupper', $encodingList);
+
+        foreach ($encodingList as $enc) {
+            switch ($enc) {
+                default:
+                    if (strncmp($enc, 'ISO-8859-', 9)) {
+                        return false;
+                    }
+                case 'ASCII':
+                case 'UTF8':
+                case 'UTF-8':
+            }
+        }
+
+        self::$encodingList = $encodingList;
+
+        return true;
+    }
+
+    public static function mb_strlen($s, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        return iconv_strlen($s, $encoding);
+    }
+
+    public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        if ('' === $needle .= '') {
+            trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
+
+            return false;
+        }
+
+        return iconv_strpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        if ($offset != (int) $offset) {
+            $offset = 0;
+        } elseif ($offset = (int) $offset) {
+            if ($offset < 0) {
+                $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                $offset = 0;
+            } else {
+                $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+            }
+        }
+
+        $pos = iconv_strrpos($haystack, $needle, $encoding);
+
+        return false !== $pos ? $offset + $pos : false;
+    }
+
+    public static function mb_strtolower($s, $encoding = null)
+    {
+        return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
+    }
+
+    public static function mb_strtoupper($s, $encoding = null)
+    {
+        return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
+    }
+
+    public static function mb_substitute_character($c = null)
+    {
+        if (0 === strcasecmp($c, 'none')) {
+            return true;
+        }
+
+        return null !== $c ? false : 'none';
+    }
+
+    public static function mb_substr($s, $start, $length = null, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        if ($start < 0) {
+            $start = iconv_strlen($s, $encoding) + $start;
+            if ($start < 0) {
+                $start = 0;
+            }
+        }
+
+        if (null === $length) {
+            $length = 2147483647;
+        } elseif ($length < 0) {
+            $length = iconv_strlen($s, $encoding) + $length - $start;
+            if ($length < 0) {
+                return '';
+            }
+        }
+
+        return iconv_substr($s, $start, $length, $encoding).'';
+    }
+
+    public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+        return self::mb_strpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        $needle = self::mb_substr($needle, 0, 1, $encoding);
+        $pos = iconv_strrpos($haystack, $needle, $encoding);
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $needle = self::mb_substr($needle, 0, 1, $encoding);
+        $pos = self::mb_strripos($haystack, $needle, $encoding);
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+        return self::mb_strrpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $pos = strpos($haystack, $needle);
+        if (false === $pos) {
+            return false;
+        }
+        if ($part) {
+            return substr($haystack, 0, $pos);
+        }
+
+        return substr($haystack, $pos);
+    }
+
+    public static function mb_get_info($type = 'all')
+    {
+        $info = array(
+            'internal_encoding' => self::$internalEncoding,
+            'http_output' => 'pass',
+            'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
+            'func_overload' => 0,
+            'func_overload_list' => 'no overload',
+            'mail_charset' => 'UTF-8',
+            'mail_header_encoding' => 'BASE64',
+            'mail_body_encoding' => 'BASE64',
+            'illegal_chars' => 0,
+            'encoding_translation' => 'Off',
+            'language' => self::$language,
+            'detect_order' => self::$encodingList,
+            'substitute_character' => 'none',
+            'strict_detection' => 'Off',
+        );
+
+        if ('all' === $type) {
+            return $info;
+        }
+        if (isset($info[$type])) {
+            return $info[$type];
+        }
+
+        return false;
+    }
+
+    public static function mb_http_input($type = '')
+    {
+        return false;
+    }
+
+    public static function mb_http_output($encoding = null)
+    {
+        return null !== $encoding ? 'pass' === $encoding : 'pass';
+    }
+
+    public static function mb_strwidth($s, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' !== $encoding) {
+            $s = iconv($encoding, 'UTF-8', $s);
+        }
+
+        $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
+
+        return ($wide << 1) + iconv_strlen($s, 'UTF-8');
+    }
+
+    public static function mb_substr_count($haystack, $needle, $encoding = null)
+    {
+        return substr_count($haystack, $needle);
+    }
+
+    public static function mb_output_handler($contents, $status)
+    {
+        return $contents;
+    }
+
+    private static function getSubpart($pos, $part, $haystack, $encoding)
+    {
+        if (false === $pos) {
+            return false;
+        }
+        if ($part) {
+            return self::mb_substr($haystack, 0, $pos, $encoding);
+        }
+
+        return self::mb_substr($haystack, $pos, null, $encoding);
+    }
+
+    private static function html_encoding_callback($m)
+    {
+        $i = 1;
+        $entities = '';
+        $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
+
+        while (isset($m[$i])) {
+            if (0x80 > $m[$i]) {
+                $entities .= chr($m[$i++]);
+                continue;
+            }
+            if (0xF0 <= $m[$i]) {
+                $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+            } elseif (0xE0 <= $m[$i]) {
+                $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+            } else {
+                $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
+            }
+
+            $entities .= '&#'.$c.';';
+        }
+
+        return $entities;
+    }
+
+    private static function title_case_lower($s)
+    {
+        return self::mb_convert_case($s[0], MB_CASE_LOWER, 'UTF-8');
+    }
+
+    private static function title_case_upper($s)
+    {
+        return self::mb_convert_case($s[0], MB_CASE_UPPER, 'UTF-8');
+    }
+
+    private static function getData($file)
+    {
+        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.ser')) {
+            return unserialize(file_get_contents($file));
+        }
+
+        return false;
+    }
+
+    private static function getEncoding($encoding)
+    {
+        if (null === $encoding) {
+            return self::$internalEncoding;
+        }
+
+        $encoding = strtoupper($encoding);
+
+        if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+            return 'CP850';
+        }
+        if ('UTF8' === $encoding) {
+            return 'UTF-8';
+        }
+
+        return $encoding;
+    }
+}
diff --git a/vendor/symfony/polyfill-mbstring/README.md b/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 0000000..091152f
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](http://php.net/mbstring) extension.
+
+More information can be found in the 
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
\ No newline at end of file
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.ser b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.ser
new file mode 100644
index 0000000..13dabdd
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.ser
@@ -0,0 +1 @@
+a:1092:{s:1:"A";s:1:"a";s:1:"B";s:1:"b";s:1:"C";s:1:"c";s:1:"D";s:1:"d";s:1:"E";s:1:"e";s:1:"F";s:1:"f";s:1:"G";s:1:"g";s:1:"H";s:1:"h";s:1:"I";s:1:"i";s:1:"J";s:1:"j";s:1:"K";s:1:"k";s:1:"L";s:1:"l";s:1:"M";s:1:"m";s:1:"N";s:1:"n";s:1:"O";s:1:"o";s:1:"P";s:1:"p";s:1:"Q";s:1:"q";s:1:"R";s:1:"r";s:1:"S";s:1:"s";s:1:"T";s:1:"t";s:1:"U";s:1:"u";s:1:"V";s:1:"v";s:1:"W";s:1:"w";s:1:"X";s:1:"x";s:1:"Y";s:1:"y";s:1:"Z";s:1:"z";s:2:"À";s:2:"à";s:2:"Á";s:2:"á";s:2:"Â";s:2:"â";s:2:"Ã";s:2:"ã";s:2:"Ä";s:2:"ä";s:2:"Å";s:2:"å";s:2:"Æ";s:2:"æ";s:2:"Ç";s:2:"ç";s:2:"È";s:2:"è";s:2:"É";s:2:"é";s:2:"Ê";s:2:"ê";s:2:"Ë";s:2:"ë";s:2:"Ì";s:2:"ì";s:2:"Í";s:2:"í";s:2:"Î";s:2:"î";s:2:"Ï";s:2:"ï";s:2:"Ð";s:2:"ð";s:2:"Ñ";s:2:"ñ";s:2:"Ò";s:2:"ò";s:2:"Ó";s:2:"ó";s:2:"Ô";s:2:"ô";s:2:"Õ";s:2:"õ";s:2:"Ö";s:2:"ö";s:2:"Ø";s:2:"ø";s:2:"Ù";s:2:"ù";s:2:"Ú";s:2:"ú";s:2:"Û";s:2:"û";s:2:"Ü";s:2:"ü";s:2:"Ý";s:2:"ý";s:2:"Þ";s:2:"þ";s:2:"Ā";s:2:"ā";s:2:"Ă";s:2:"ă";s:2:"Ą";s:2:"ą";s:2:"Ć";s:2:"ć";s:2:"Ĉ";s:2:"ĉ";s:2:"Ċ";s:2:"ċ";s:2:"Č";s:2:"č";s:2:"Ď";s:2:"ď";s:2:"Đ";s:2:"đ";s:2:"Ē";s:2:"ē";s:2:"Ĕ";s:2:"ĕ";s:2:"Ė";s:2:"ė";s:2:"Ę";s:2:"ę";s:2:"Ě";s:2:"ě";s:2:"Ĝ";s:2:"ĝ";s:2:"Ğ";s:2:"ğ";s:2:"Ġ";s:2:"ġ";s:2:"Ģ";s:2:"ģ";s:2:"Ĥ";s:2:"ĥ";s:2:"Ħ";s:2:"ħ";s:2:"Ĩ";s:2:"ĩ";s:2:"Ī";s:2:"ī";s:2:"Ĭ";s:2:"ĭ";s:2:"Į";s:2:"į";s:2:"İ";s:1:"i";s:2:"Ĳ";s:2:"ĳ";s:2:"Ĵ";s:2:"ĵ";s:2:"Ķ";s:2:"ķ";s:2:"Ĺ";s:2:"ĺ";s:2:"Ļ";s:2:"ļ";s:2:"Ľ";s:2:"ľ";s:2:"Ŀ";s:2:"ŀ";s:2:"Ł";s:2:"ł";s:2:"Ń";s:2:"ń";s:2:"Ņ";s:2:"ņ";s:2:"Ň";s:2:"ň";s:2:"Ŋ";s:2:"ŋ";s:2:"Ō";s:2:"ō";s:2:"Ŏ";s:2:"ŏ";s:2:"Ő";s:2:"ő";s:2:"Œ";s:2:"œ";s:2:"Ŕ";s:2:"ŕ";s:2:"Ŗ";s:2:"ŗ";s:2:"Ř";s:2:"ř";s:2:"Ś";s:2:"ś";s:2:"Ŝ";s:2:"ŝ";s:2:"Ş";s:2:"ş";s:2:"Š";s:2:"š";s:2:"Ţ";s:2:"ţ";s:2:"Ť";s:2:"ť";s:2:"Ŧ";s:2:"ŧ";s:2:"Ũ";s:2:"ũ";s:2:"Ū";s:2:"ū";s:2:"Ŭ";s:2:"ŭ";s:2:"Ů";s:2:"ů";s:2:"Ű";s:2:"ű";s:2:"Ų";s:2:"ų";s:2:"Ŵ";s:2:"ŵ";s:2:"Ŷ";s:2:"ŷ";s:2:"Ÿ";s:2:"ÿ";s:2:"Ź";s:2:"ź";s:2:"Ż";s:2:"ż";s:2:"Ž";s:2:"ž";s:2:"Ɓ";s:2:"ɓ";s:2:"Ƃ";s:2:"ƃ";s:2:"Ƅ";s:2:"ƅ";s:2:"Ɔ";s:2:"ɔ";s:2:"Ƈ";s:2:"ƈ";s:2:"Ɖ";s:2:"ɖ";s:2:"Ɗ";s:2:"ɗ";s:2:"Ƌ";s:2:"ƌ";s:2:"Ǝ";s:2:"ǝ";s:2:"Ə";s:2:"ə";s:2:"Ɛ";s:2:"ɛ";s:2:"Ƒ";s:2:"ƒ";s:2:"Ɠ";s:2:"ɠ";s:2:"Ɣ";s:2:"ɣ";s:2:"Ɩ";s:2:"ɩ";s:2:"Ɨ";s:2:"ɨ";s:2:"Ƙ";s:2:"ƙ";s:2:"Ɯ";s:2:"ɯ";s:2:"Ɲ";s:2:"ɲ";s:2:"Ɵ";s:2:"ɵ";s:2:"Ơ";s:2:"ơ";s:2:"Ƣ";s:2:"ƣ";s:2:"Ƥ";s:2:"ƥ";s:2:"Ʀ";s:2:"ʀ";s:2:"Ƨ";s:2:"ƨ";s:2:"Ʃ";s:2:"ʃ";s:2:"Ƭ";s:2:"ƭ";s:2:"Ʈ";s:2:"ʈ";s:2:"Ư";s:2:"ư";s:2:"Ʊ";s:2:"ʊ";s:2:"Ʋ";s:2:"ʋ";s:2:"Ƴ";s:2:"ƴ";s:2:"Ƶ";s:2:"ƶ";s:2:"Ʒ";s:2:"ʒ";s:2:"Ƹ";s:2:"ƹ";s:2:"Ƽ";s:2:"ƽ";s:2:"Ǆ";s:2:"ǆ";s:2:"ǅ";s:2:"ǆ";s:2:"Ǉ";s:2:"ǉ";s:2:"ǈ";s:2:"ǉ";s:2:"Ǌ";s:2:"ǌ";s:2:"ǋ";s:2:"ǌ";s:2:"Ǎ";s:2:"ǎ";s:2:"Ǐ";s:2:"ǐ";s:2:"Ǒ";s:2:"ǒ";s:2:"Ǔ";s:2:"ǔ";s:2:"Ǖ";s:2:"ǖ";s:2:"Ǘ";s:2:"ǘ";s:2:"Ǚ";s:2:"ǚ";s:2:"Ǜ";s:2:"ǜ";s:2:"Ǟ";s:2:"ǟ";s:2:"Ǡ";s:2:"ǡ";s:2:"Ǣ";s:2:"ǣ";s:2:"Ǥ";s:2:"ǥ";s:2:"Ǧ";s:2:"ǧ";s:2:"Ǩ";s:2:"ǩ";s:2:"Ǫ";s:2:"ǫ";s:2:"Ǭ";s:2:"ǭ";s:2:"Ǯ";s:2:"ǯ";s:2:"Ǳ";s:2:"ǳ";s:2:"ǲ";s:2:"ǳ";s:2:"Ǵ";s:2:"ǵ";s:2:"Ƕ";s:2:"ƕ";s:2:"Ƿ";s:2:"ƿ";s:2:"Ǹ";s:2:"ǹ";s:2:"Ǻ";s:2:"ǻ";s:2:"Ǽ";s:2:"ǽ";s:2:"Ǿ";s:2:"ǿ";s:2:"Ȁ";s:2:"ȁ";s:2:"Ȃ";s:2:"ȃ";s:2:"Ȅ";s:2:"ȅ";s:2:"Ȇ";s:2:"ȇ";s:2:"Ȉ";s:2:"ȉ";s:2:"Ȋ";s:2:"ȋ";s:2:"Ȍ";s:2:"ȍ";s:2:"Ȏ";s:2:"ȏ";s:2:"Ȑ";s:2:"ȑ";s:2:"Ȓ";s:2:"ȓ";s:2:"Ȕ";s:2:"ȕ";s:2:"Ȗ";s:2:"ȗ";s:2:"Ș";s:2:"ș";s:2:"Ț";s:2:"ț";s:2:"Ȝ";s:2:"ȝ";s:2:"Ȟ";s:2:"ȟ";s:2:"Ƞ";s:2:"ƞ";s:2:"Ȣ";s:2:"ȣ";s:2:"Ȥ";s:2:"ȥ";s:2:"Ȧ";s:2:"ȧ";s:2:"Ȩ";s:2:"ȩ";s:2:"Ȫ";s:2:"ȫ";s:2:"Ȭ";s:2:"ȭ";s:2:"Ȯ";s:2:"ȯ";s:2:"Ȱ";s:2:"ȱ";s:2:"Ȳ";s:2:"ȳ";s:2:"Ⱥ";s:3:"ⱥ";s:2:"Ȼ";s:2:"ȼ";s:2:"Ƚ";s:2:"ƚ";s:2:"Ⱦ";s:3:"ⱦ";s:2:"Ɂ";s:2:"ɂ";s:2:"Ƀ";s:2:"ƀ";s:2:"Ʉ";s:2:"ʉ";s:2:"Ʌ";s:2:"ʌ";s:2:"Ɇ";s:2:"ɇ";s:2:"Ɉ";s:2:"ɉ";s:2:"Ɋ";s:2:"ɋ";s:2:"Ɍ";s:2:"ɍ";s:2:"Ɏ";s:2:"ɏ";s:2:"Ͱ";s:2:"ͱ";s:2:"Ͳ";s:2:"ͳ";s:2:"Ͷ";s:2:"ͷ";s:2:"Ϳ";s:2:"ϳ";s:2:"Ά";s:2:"ά";s:2:"Έ";s:2:"έ";s:2:"Ή";s:2:"ή";s:2:"Ί";s:2:"ί";s:2:"Ό";s:2:"ό";s:2:"Ύ";s:2:"ύ";s:2:"Ώ";s:2:"ώ";s:2:"Α";s:2:"α";s:2:"Β";s:2:"β";s:2:"Γ";s:2:"γ";s:2:"Δ";s:2:"δ";s:2:"Ε";s:2:"ε";s:2:"Ζ";s:2:"ζ";s:2:"Η";s:2:"η";s:2:"Θ";s:2:"θ";s:2:"Ι";s:2:"ι";s:2:"Κ";s:2:"κ";s:2:"Λ";s:2:"λ";s:2:"Μ";s:2:"μ";s:2:"Ν";s:2:"ν";s:2:"Ξ";s:2:"ξ";s:2:"Ο";s:2:"ο";s:2:"Π";s:2:"π";s:2:"Ρ";s:2:"ρ";s:2:"Σ";s:2:"σ";s:2:"Τ";s:2:"τ";s:2:"Υ";s:2:"υ";s:2:"Φ";s:2:"φ";s:2:"Χ";s:2:"χ";s:2:"Ψ";s:2:"ψ";s:2:"Ω";s:2:"ω";s:2:"Ϊ";s:2:"ϊ";s:2:"Ϋ";s:2:"ϋ";s:2:"Ϗ";s:2:"ϗ";s:2:"Ϙ";s:2:"ϙ";s:2:"Ϛ";s:2:"ϛ";s:2:"Ϝ";s:2:"ϝ";s:2:"Ϟ";s:2:"ϟ";s:2:"Ϡ";s:2:"ϡ";s:2:"Ϣ";s:2:"ϣ";s:2:"Ϥ";s:2:"ϥ";s:2:"Ϧ";s:2:"ϧ";s:2:"Ϩ";s:2:"ϩ";s:2:"Ϫ";s:2:"ϫ";s:2:"Ϭ";s:2:"ϭ";s:2:"Ϯ";s:2:"ϯ";s:2:"ϴ";s:2:"θ";s:2:"Ϸ";s:2:"ϸ";s:2:"Ϲ";s:2:"ϲ";s:2:"Ϻ";s:2:"ϻ";s:2:"Ͻ";s:2:"ͻ";s:2:"Ͼ";s:2:"ͼ";s:2:"Ͽ";s:2:"ͽ";s:2:"Ѐ";s:2:"ѐ";s:2:"Ё";s:2:"ё";s:2:"Ђ";s:2:"ђ";s:2:"Ѓ";s:2:"ѓ";s:2:"Є";s:2:"є";s:2:"Ѕ";s:2:"ѕ";s:2:"І";s:2:"і";s:2:"Ї";s:2:"ї";s:2:"Ј";s:2:"ј";s:2:"Љ";s:2:"љ";s:2:"Њ";s:2:"њ";s:2:"Ћ";s:2:"ћ";s:2:"Ќ";s:2:"ќ";s:2:"Ѝ";s:2:"ѝ";s:2:"Ў";s:2:"ў";s:2:"Џ";s:2:"џ";s:2:"А";s:2:"а";s:2:"Б";s:2:"б";s:2:"В";s:2:"в";s:2:"Г";s:2:"г";s:2:"Д";s:2:"д";s:2:"Е";s:2:"е";s:2:"Ж";s:2:"ж";s:2:"З";s:2:"з";s:2:"И";s:2:"и";s:2:"Й";s:2:"й";s:2:"К";s:2:"к";s:2:"Л";s:2:"л";s:2:"М";s:2:"м";s:2:"Н";s:2:"н";s:2:"О";s:2:"о";s:2:"П";s:2:"п";s:2:"Р";s:2:"р";s:2:"С";s:2:"с";s:2:"Т";s:2:"т";s:2:"У";s:2:"у";s:2:"Ф";s:2:"ф";s:2:"Х";s:2:"х";s:2:"Ц";s:2:"ц";s:2:"Ч";s:2:"ч";s:2:"Ш";s:2:"ш";s:2:"Щ";s:2:"щ";s:2:"Ъ";s:2:"ъ";s:2:"Ы";s:2:"ы";s:2:"Ь";s:2:"ь";s:2:"Э";s:2:"э";s:2:"Ю";s:2:"ю";s:2:"Я";s:2:"я";s:2:"Ѡ";s:2:"ѡ";s:2:"Ѣ";s:2:"ѣ";s:2:"Ѥ";s:2:"ѥ";s:2:"Ѧ";s:2:"ѧ";s:2:"Ѩ";s:2:"ѩ";s:2:"Ѫ";s:2:"ѫ";s:2:"Ѭ";s:2:"ѭ";s:2:"Ѯ";s:2:"ѯ";s:2:"Ѱ";s:2:"ѱ";s:2:"Ѳ";s:2:"ѳ";s:2:"Ѵ";s:2:"ѵ";s:2:"Ѷ";s:2:"ѷ";s:2:"Ѹ";s:2:"ѹ";s:2:"Ѻ";s:2:"ѻ";s:2:"Ѽ";s:2:"ѽ";s:2:"Ѿ";s:2:"ѿ";s:2:"Ҁ";s:2:"ҁ";s:2:"Ҋ";s:2:"ҋ";s:2:"Ҍ";s:2:"ҍ";s:2:"Ҏ";s:2:"ҏ";s:2:"Ґ";s:2:"ґ";s:2:"Ғ";s:2:"ғ";s:2:"Ҕ";s:2:"ҕ";s:2:"Җ";s:2:"җ";s:2:"Ҙ";s:2:"ҙ";s:2:"Қ";s:2:"қ";s:2:"Ҝ";s:2:"ҝ";s:2:"Ҟ";s:2:"ҟ";s:2:"Ҡ";s:2:"ҡ";s:2:"Ң";s:2:"ң";s:2:"Ҥ";s:2:"ҥ";s:2:"Ҧ";s:2:"ҧ";s:2:"Ҩ";s:2:"ҩ";s:2:"Ҫ";s:2:"ҫ";s:2:"Ҭ";s:2:"ҭ";s:2:"Ү";s:2:"ү";s:2:"Ұ";s:2:"ұ";s:2:"Ҳ";s:2:"ҳ";s:2:"Ҵ";s:2:"ҵ";s:2:"Ҷ";s:2:"ҷ";s:2:"Ҹ";s:2:"ҹ";s:2:"Һ";s:2:"һ";s:2:"Ҽ";s:2:"ҽ";s:2:"Ҿ";s:2:"ҿ";s:2:"Ӏ";s:2:"ӏ";s:2:"Ӂ";s:2:"ӂ";s:2:"Ӄ";s:2:"ӄ";s:2:"Ӆ";s:2:"ӆ";s:2:"Ӈ";s:2:"ӈ";s:2:"Ӊ";s:2:"ӊ";s:2:"Ӌ";s:2:"ӌ";s:2:"Ӎ";s:2:"ӎ";s:2:"Ӑ";s:2:"ӑ";s:2:"Ӓ";s:2:"ӓ";s:2:"Ӕ";s:2:"ӕ";s:2:"Ӗ";s:2:"ӗ";s:2:"Ә";s:2:"ә";s:2:"Ӛ";s:2:"ӛ";s:2:"Ӝ";s:2:"ӝ";s:2:"Ӟ";s:2:"ӟ";s:2:"Ӡ";s:2:"ӡ";s:2:"Ӣ";s:2:"ӣ";s:2:"Ӥ";s:2:"ӥ";s:2:"Ӧ";s:2:"ӧ";s:2:"Ө";s:2:"ө";s:2:"Ӫ";s:2:"ӫ";s:2:"Ӭ";s:2:"ӭ";s:2:"Ӯ";s:2:"ӯ";s:2:"Ӱ";s:2:"ӱ";s:2:"Ӳ";s:2:"ӳ";s:2:"Ӵ";s:2:"ӵ";s:2:"Ӷ";s:2:"ӷ";s:2:"Ӹ";s:2:"ӹ";s:2:"Ӻ";s:2:"ӻ";s:2:"Ӽ";s:2:"ӽ";s:2:"Ӿ";s:2:"ӿ";s:2:"Ԁ";s:2:"ԁ";s:2:"Ԃ";s:2:"ԃ";s:2:"Ԅ";s:2:"ԅ";s:2:"Ԇ";s:2:"ԇ";s:2:"Ԉ";s:2:"ԉ";s:2:"Ԋ";s:2:"ԋ";s:2:"Ԍ";s:2:"ԍ";s:2:"Ԏ";s:2:"ԏ";s:2:"Ԑ";s:2:"ԑ";s:2:"Ԓ";s:2:"ԓ";s:2:"Ԕ";s:2:"ԕ";s:2:"Ԗ";s:2:"ԗ";s:2:"Ԙ";s:2:"ԙ";s:2:"Ԛ";s:2:"ԛ";s:2:"Ԝ";s:2:"ԝ";s:2:"Ԟ";s:2:"ԟ";s:2:"Ԡ";s:2:"ԡ";s:2:"Ԣ";s:2:"ԣ";s:2:"Ԥ";s:2:"ԥ";s:2:"Ԧ";s:2:"ԧ";s:2:"Ԩ";s:2:"ԩ";s:2:"Ԫ";s:2:"ԫ";s:2:"Ԭ";s:2:"ԭ";s:2:"Ԯ";s:2:"ԯ";s:2:"Ա";s:2:"ա";s:2:"Բ";s:2:"բ";s:2:"Գ";s:2:"գ";s:2:"Դ";s:2:"դ";s:2:"Ե";s:2:"ե";s:2:"Զ";s:2:"զ";s:2:"Է";s:2:"է";s:2:"Ը";s:2:"ը";s:2:"Թ";s:2:"թ";s:2:"Ժ";s:2:"ժ";s:2:"Ի";s:2:"ի";s:2:"Լ";s:2:"լ";s:2:"Խ";s:2:"խ";s:2:"Ծ";s:2:"ծ";s:2:"Կ";s:2:"կ";s:2:"Հ";s:2:"հ";s:2:"Ձ";s:2:"ձ";s:2:"Ղ";s:2:"ղ";s:2:"Ճ";s:2:"ճ";s:2:"Մ";s:2:"մ";s:2:"Յ";s:2:"յ";s:2:"Ն";s:2:"ն";s:2:"Շ";s:2:"շ";s:2:"Ո";s:2:"ո";s:2:"Չ";s:2:"չ";s:2:"Պ";s:2:"պ";s:2:"Ջ";s:2:"ջ";s:2:"Ռ";s:2:"ռ";s:2:"Ս";s:2:"ս";s:2:"Վ";s:2:"վ";s:2:"Տ";s:2:"տ";s:2:"Ր";s:2:"ր";s:2:"Ց";s:2:"ց";s:2:"Ւ";s:2:"ւ";s:2:"Փ";s:2:"փ";s:2:"Ք";s:2:"ք";s:2:"Օ";s:2:"օ";s:2:"Ֆ";s:2:"ֆ";s:3:"Ⴀ";s:3:"ⴀ";s:3:"Ⴁ";s:3:"ⴁ";s:3:"Ⴂ";s:3:"ⴂ";s:3:"Ⴃ";s:3:"ⴃ";s:3:"Ⴄ";s:3:"ⴄ";s:3:"Ⴅ";s:3:"ⴅ";s:3:"Ⴆ";s:3:"ⴆ";s:3:"Ⴇ";s:3:"ⴇ";s:3:"Ⴈ";s:3:"ⴈ";s:3:"Ⴉ";s:3:"ⴉ";s:3:"Ⴊ";s:3:"ⴊ";s:3:"Ⴋ";s:3:"ⴋ";s:3:"Ⴌ";s:3:"ⴌ";s:3:"Ⴍ";s:3:"ⴍ";s:3:"Ⴎ";s:3:"ⴎ";s:3:"Ⴏ";s:3:"ⴏ";s:3:"Ⴐ";s:3:"ⴐ";s:3:"Ⴑ";s:3:"ⴑ";s:3:"Ⴒ";s:3:"ⴒ";s:3:"Ⴓ";s:3:"ⴓ";s:3:"Ⴔ";s:3:"ⴔ";s:3:"Ⴕ";s:3:"ⴕ";s:3:"Ⴖ";s:3:"ⴖ";s:3:"Ⴗ";s:3:"ⴗ";s:3:"Ⴘ";s:3:"ⴘ";s:3:"Ⴙ";s:3:"ⴙ";s:3:"Ⴚ";s:3:"ⴚ";s:3:"Ⴛ";s:3:"ⴛ";s:3:"Ⴜ";s:3:"ⴜ";s:3:"Ⴝ";s:3:"ⴝ";s:3:"Ⴞ";s:3:"ⴞ";s:3:"Ⴟ";s:3:"ⴟ";s:3:"Ⴠ";s:3:"ⴠ";s:3:"Ⴡ";s:3:"ⴡ";s:3:"Ⴢ";s:3:"ⴢ";s:3:"Ⴣ";s:3:"ⴣ";s:3:"Ⴤ";s:3:"ⴤ";s:3:"Ⴥ";s:3:"ⴥ";s:3:"Ⴧ";s:3:"ⴧ";s:3:"Ⴭ";s:3:"ⴭ";s:3:"Ḁ";s:3:"ḁ";s:3:"Ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"ḇ";s:3:"Ḉ";s:3:"ḉ";s:3:"Ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"ḍ";s:3:"Ḏ";s:3:"ḏ";s:3:"Ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"ḓ";s:3:"Ḕ";s:3:"ḕ";s:3:"Ḗ";s:3:"ḗ";s:3:"Ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"ḛ";s:3:"Ḝ";s:3:"ḝ";s:3:"Ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"ḭ";s:3:"Ḯ";s:3:"ḯ";s:3:"Ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"ḷ";s:3:"Ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"ḿ";s:3:"Ṁ";s:3:"ṁ";s:3:"Ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"ṅ";s:3:"Ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"ṋ";s:3:"Ṍ";s:3:"ṍ";s:3:"Ṏ";s:3:"ṏ";s:3:"Ṑ";s:3:"ṑ";s:3:"Ṓ";s:3:"ṓ";s:3:"Ṕ";s:3:"ṕ";s:3:"Ṗ";s:3:"ṗ";s:3:"Ṙ";s:3:"ṙ";s:3:"Ṛ";s:3:"ṛ";s:3:"Ṝ";s:3:"ṝ";s:3:"Ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"ṡ";s:3:"Ṣ";s:3:"ṣ";s:3:"Ṥ";s:3:"ṥ";s:3:"Ṧ";s:3:"ṧ";s:3:"Ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"ṭ";s:3:"Ṯ";s:3:"ṯ";s:3:"Ṱ";s:3:"ṱ";s:3:"Ṳ";s:3:"ṳ";s:3:"Ṵ";s:3:"ṵ";s:3:"Ṷ";s:3:"ṷ";s:3:"Ṹ";s:3:"ṹ";s:3:"Ṻ";s:3:"ṻ";s:3:"Ṽ";s:3:"ṽ";s:3:"Ṿ";s:3:"ṿ";s:3:"Ẁ";s:3:"ẁ";s:3:"Ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"ẍ";s:3:"Ẏ";s:3:"ẏ";s:3:"Ẑ";s:3:"ẑ";s:3:"Ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẞ";s:2:"ß";s:3:"Ạ";s:3:"ạ";s:3:"Ả";s:3:"ả";s:3:"Ấ";s:3:"ấ";s:3:"Ầ";s:3:"ầ";s:3:"Ẩ";s:3:"ẩ";s:3:"Ẫ";s:3:"ẫ";s:3:"Ậ";s:3:"ậ";s:3:"Ắ";s:3:"ắ";s:3:"Ằ";s:3:"ằ";s:3:"Ẳ";s:3:"ẳ";s:3:"Ẵ";s:3:"ẵ";s:3:"Ặ";s:3:"ặ";s:3:"Ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"ẽ";s:3:"Ế";s:3:"ế";s:3:"Ề";s:3:"ề";s:3:"Ể";s:3:"ể";s:3:"Ễ";s:3:"ễ";s:3:"Ệ";s:3:"ệ";s:3:"Ỉ";s:3:"ỉ";s:3:"Ị";s:3:"ị";s:3:"Ọ";s:3:"ọ";s:3:"Ỏ";s:3:"ỏ";s:3:"Ố";s:3:"ố";s:3:"Ồ";s:3:"ồ";s:3:"Ổ";s:3:"ổ";s:3:"Ỗ";s:3:"ỗ";s:3:"Ộ";s:3:"ộ";s:3:"Ớ";s:3:"ớ";s:3:"Ờ";s:3:"ờ";s:3:"Ở";s:3:"ở";s:3:"Ỡ";s:3:"ỡ";s:3:"Ợ";s:3:"ợ";s:3:"Ụ";s:3:"ụ";s:3:"Ủ";s:3:"ủ";s:3:"Ứ";s:3:"ứ";s:3:"Ừ";s:3:"ừ";s:3:"Ử";s:3:"ử";s:3:"Ữ";s:3:"ữ";s:3:"Ự";s:3:"ự";s:3:"Ỳ";s:3:"ỳ";s:3:"Ỵ";s:3:"ỵ";s:3:"Ỷ";s:3:"ỷ";s:3:"Ỹ";s:3:"ỹ";s:3:"Ỻ";s:3:"ỻ";s:3:"Ỽ";s:3:"ỽ";s:3:"Ỿ";s:3:"ỿ";s:3:"Ἀ";s:3:"ἀ";s:3:"Ἁ";s:3:"ἁ";s:3:"Ἂ";s:3:"ἂ";s:3:"Ἃ";s:3:"ἃ";s:3:"Ἄ";s:3:"ἄ";s:3:"Ἅ";s:3:"ἅ";s:3:"Ἆ";s:3:"ἆ";s:3:"Ἇ";s:3:"ἇ";s:3:"Ἐ";s:3:"ἐ";s:3:"Ἑ";s:3:"ἑ";s:3:"Ἒ";s:3:"ἒ";s:3:"Ἓ";s:3:"ἓ";s:3:"Ἔ";s:3:"ἔ";s:3:"Ἕ";s:3:"ἕ";s:3:"Ἠ";s:3:"ἠ";s:3:"Ἡ";s:3:"ἡ";s:3:"Ἢ";s:3:"ἢ";s:3:"Ἣ";s:3:"ἣ";s:3:"Ἤ";s:3:"ἤ";s:3:"Ἥ";s:3:"ἥ";s:3:"Ἦ";s:3:"ἦ";s:3:"Ἧ";s:3:"ἧ";s:3:"Ἰ";s:3:"ἰ";s:3:"Ἱ";s:3:"ἱ";s:3:"Ἲ";s:3:"ἲ";s:3:"Ἳ";s:3:"ἳ";s:3:"Ἴ";s:3:"ἴ";s:3:"Ἵ";s:3:"ἵ";s:3:"Ἶ";s:3:"ἶ";s:3:"Ἷ";s:3:"ἷ";s:3:"Ὀ";s:3:"ὀ";s:3:"Ὁ";s:3:"ὁ";s:3:"Ὂ";s:3:"ὂ";s:3:"Ὃ";s:3:"ὃ";s:3:"Ὄ";s:3:"ὄ";s:3:"Ὅ";s:3:"ὅ";s:3:"Ὑ";s:3:"ὑ";s:3:"Ὓ";s:3:"ὓ";s:3:"Ὕ";s:3:"ὕ";s:3:"Ὗ";s:3:"ὗ";s:3:"Ὠ";s:3:"ὠ";s:3:"Ὡ";s:3:"ὡ";s:3:"Ὢ";s:3:"ὢ";s:3:"Ὣ";s:3:"ὣ";s:3:"Ὤ";s:3:"ὤ";s:3:"Ὥ";s:3:"ὥ";s:3:"Ὦ";s:3:"ὦ";s:3:"Ὧ";s:3:"ὧ";s:3:"ᾈ";s:3:"ᾀ";s:3:"ᾉ";s:3:"ᾁ";s:3:"ᾊ";s:3:"ᾂ";s:3:"ᾋ";s:3:"ᾃ";s:3:"ᾌ";s:3:"ᾄ";s:3:"ᾍ";s:3:"ᾅ";s:3:"ᾎ";s:3:"ᾆ";s:3:"ᾏ";s:3:"ᾇ";s:3:"ᾘ";s:3:"ᾐ";s:3:"ᾙ";s:3:"ᾑ";s:3:"ᾚ";s:3:"ᾒ";s:3:"ᾛ";s:3:"ᾓ";s:3:"ᾜ";s:3:"ᾔ";s:3:"ᾝ";s:3:"ᾕ";s:3:"ᾞ";s:3:"ᾖ";s:3:"ᾟ";s:3:"ᾗ";s:3:"ᾨ";s:3:"ᾠ";s:3:"ᾩ";s:3:"ᾡ";s:3:"ᾪ";s:3:"ᾢ";s:3:"ᾫ";s:3:"ᾣ";s:3:"ᾬ";s:3:"ᾤ";s:3:"ᾭ";s:3:"ᾥ";s:3:"ᾮ";s:3:"ᾦ";s:3:"ᾯ";s:3:"ᾧ";s:3:"Ᾰ";s:3:"ᾰ";s:3:"Ᾱ";s:3:"ᾱ";s:3:"Ὰ";s:3:"ὰ";s:3:"Ά";s:3:"ά";s:3:"ᾼ";s:3:"ᾳ";s:3:"Ὲ";s:3:"ὲ";s:3:"Έ";s:3:"έ";s:3:"Ὴ";s:3:"ὴ";s:3:"Ή";s:3:"ή";s:3:"ῌ";s:3:"ῃ";s:3:"Ῐ";s:3:"ῐ";s:3:"Ῑ";s:3:"ῑ";s:3:"Ὶ";s:3:"ὶ";s:3:"Ί";s:3:"ί";s:3:"Ῠ";s:3:"ῠ";s:3:"Ῡ";s:3:"ῡ";s:3:"Ὺ";s:3:"ὺ";s:3:"Ύ";s:3:"ύ";s:3:"Ῥ";s:3:"ῥ";s:3:"Ὸ";s:3:"ὸ";s:3:"Ό";s:3:"ό";s:3:"Ὼ";s:3:"ὼ";s:3:"Ώ";s:3:"ώ";s:3:"ῼ";s:3:"ῳ";s:3:"Ω";s:2:"ω";s:3:"K";s:1:"k";s:3:"Å";s:2:"å";s:3:"Ⅎ";s:3:"ⅎ";s:3:"Ⅰ";s:3:"ⅰ";s:3:"Ⅱ";s:3:"ⅱ";s:3:"Ⅲ";s:3:"ⅲ";s:3:"Ⅳ";s:3:"ⅳ";s:3:"Ⅴ";s:3:"ⅴ";s:3:"Ⅵ";s:3:"ⅵ";s:3:"Ⅶ";s:3:"ⅶ";s:3:"Ⅷ";s:3:"ⅷ";s:3:"Ⅸ";s:3:"ⅸ";s:3:"Ⅹ";s:3:"ⅹ";s:3:"Ⅺ";s:3:"ⅺ";s:3:"Ⅻ";s:3:"ⅻ";s:3:"Ⅼ";s:3:"ⅼ";s:3:"Ⅽ";s:3:"ⅽ";s:3:"Ⅾ";s:3:"ⅾ";s:3:"Ⅿ";s:3:"ⅿ";s:3:"Ↄ";s:3:"ↄ";s:3:"Ⓐ";s:3:"ⓐ";s:3:"Ⓑ";s:3:"ⓑ";s:3:"Ⓒ";s:3:"ⓒ";s:3:"Ⓓ";s:3:"ⓓ";s:3:"Ⓔ";s:3:"ⓔ";s:3:"Ⓕ";s:3:"ⓕ";s:3:"Ⓖ";s:3:"ⓖ";s:3:"Ⓗ";s:3:"ⓗ";s:3:"Ⓘ";s:3:"ⓘ";s:3:"Ⓙ";s:3:"ⓙ";s:3:"Ⓚ";s:3:"ⓚ";s:3:"Ⓛ";s:3:"ⓛ";s:3:"Ⓜ";s:3:"ⓜ";s:3:"Ⓝ";s:3:"ⓝ";s:3:"Ⓞ";s:3:"ⓞ";s:3:"Ⓟ";s:3:"ⓟ";s:3:"Ⓠ";s:3:"ⓠ";s:3:"Ⓡ";s:3:"ⓡ";s:3:"Ⓢ";s:3:"ⓢ";s:3:"Ⓣ";s:3:"ⓣ";s:3:"Ⓤ";s:3:"ⓤ";s:3:"Ⓥ";s:3:"ⓥ";s:3:"Ⓦ";s:3:"ⓦ";s:3:"Ⓧ";s:3:"ⓧ";s:3:"Ⓨ";s:3:"ⓨ";s:3:"Ⓩ";s:3:"ⓩ";s:3:"Ⰰ";s:3:"ⰰ";s:3:"Ⰱ";s:3:"ⰱ";s:3:"Ⰲ";s:3:"ⰲ";s:3:"Ⰳ";s:3:"ⰳ";s:3:"Ⰴ";s:3:"ⰴ";s:3:"Ⰵ";s:3:"ⰵ";s:3:"Ⰶ";s:3:"ⰶ";s:3:"Ⰷ";s:3:"ⰷ";s:3:"Ⰸ";s:3:"ⰸ";s:3:"Ⰹ";s:3:"ⰹ";s:3:"Ⰺ";s:3:"ⰺ";s:3:"Ⰻ";s:3:"ⰻ";s:3:"Ⰼ";s:3:"ⰼ";s:3:"Ⰽ";s:3:"ⰽ";s:3:"Ⰾ";s:3:"ⰾ";s:3:"Ⰿ";s:3:"ⰿ";s:3:"Ⱀ";s:3:"ⱀ";s:3:"Ⱁ";s:3:"ⱁ";s:3:"Ⱂ";s:3:"ⱂ";s:3:"Ⱃ";s:3:"ⱃ";s:3:"Ⱄ";s:3:"ⱄ";s:3:"Ⱅ";s:3:"ⱅ";s:3:"Ⱆ";s:3:"ⱆ";s:3:"Ⱇ";s:3:"ⱇ";s:3:"Ⱈ";s:3:"ⱈ";s:3:"Ⱉ";s:3:"ⱉ";s:3:"Ⱊ";s:3:"ⱊ";s:3:"Ⱋ";s:3:"ⱋ";s:3:"Ⱌ";s:3:"ⱌ";s:3:"Ⱍ";s:3:"ⱍ";s:3:"Ⱎ";s:3:"ⱎ";s:3:"Ⱏ";s:3:"ⱏ";s:3:"Ⱐ";s:3:"ⱐ";s:3:"Ⱑ";s:3:"ⱑ";s:3:"Ⱒ";s:3:"ⱒ";s:3:"Ⱓ";s:3:"ⱓ";s:3:"Ⱔ";s:3:"ⱔ";s:3:"Ⱕ";s:3:"ⱕ";s:3:"Ⱖ";s:3:"ⱖ";s:3:"Ⱗ";s:3:"ⱗ";s:3:"Ⱘ";s:3:"ⱘ";s:3:"Ⱙ";s:3:"ⱙ";s:3:"Ⱚ";s:3:"ⱚ";s:3:"Ⱛ";s:3:"ⱛ";s:3:"Ⱜ";s:3:"ⱜ";s:3:"Ⱝ";s:3:"ⱝ";s:3:"Ⱞ";s:3:"ⱞ";s:3:"Ⱡ";s:3:"ⱡ";s:3:"Ɫ";s:2:"ɫ";s:3:"Ᵽ";s:3:"ᵽ";s:3:"Ɽ";s:2:"ɽ";s:3:"Ⱨ";s:3:"ⱨ";s:3:"Ⱪ";s:3:"ⱪ";s:3:"Ⱬ";s:3:"ⱬ";s:3:"Ɑ";s:2:"ɑ";s:3:"Ɱ";s:2:"ɱ";s:3:"Ɐ";s:2:"ɐ";s:3:"Ɒ";s:2:"ɒ";s:3:"Ⱳ";s:3:"ⱳ";s:3:"Ⱶ";s:3:"ⱶ";s:3:"Ȿ";s:2:"ȿ";s:3:"Ɀ";s:2:"ɀ";s:3:"Ⲁ";s:3:"ⲁ";s:3:"Ⲃ";s:3:"ⲃ";s:3:"Ⲅ";s:3:"ⲅ";s:3:"Ⲇ";s:3:"ⲇ";s:3:"Ⲉ";s:3:"ⲉ";s:3:"Ⲋ";s:3:"ⲋ";s:3:"Ⲍ";s:3:"ⲍ";s:3:"Ⲏ";s:3:"ⲏ";s:3:"Ⲑ";s:3:"ⲑ";s:3:"Ⲓ";s:3:"ⲓ";s:3:"Ⲕ";s:3:"ⲕ";s:3:"Ⲗ";s:3:"ⲗ";s:3:"Ⲙ";s:3:"ⲙ";s:3:"Ⲛ";s:3:"ⲛ";s:3:"Ⲝ";s:3:"ⲝ";s:3:"Ⲟ";s:3:"ⲟ";s:3:"Ⲡ";s:3:"ⲡ";s:3:"Ⲣ";s:3:"ⲣ";s:3:"Ⲥ";s:3:"ⲥ";s:3:"Ⲧ";s:3:"ⲧ";s:3:"Ⲩ";s:3:"ⲩ";s:3:"Ⲫ";s:3:"ⲫ";s:3:"Ⲭ";s:3:"ⲭ";s:3:"Ⲯ";s:3:"ⲯ";s:3:"Ⲱ";s:3:"ⲱ";s:3:"Ⲳ";s:3:"ⲳ";s:3:"Ⲵ";s:3:"ⲵ";s:3:"Ⲷ";s:3:"ⲷ";s:3:"Ⲹ";s:3:"ⲹ";s:3:"Ⲻ";s:3:"ⲻ";s:3:"Ⲽ";s:3:"ⲽ";s:3:"Ⲿ";s:3:"ⲿ";s:3:"Ⳁ";s:3:"ⳁ";s:3:"Ⳃ";s:3:"ⳃ";s:3:"Ⳅ";s:3:"ⳅ";s:3:"Ⳇ";s:3:"ⳇ";s:3:"Ⳉ";s:3:"ⳉ";s:3:"Ⳋ";s:3:"ⳋ";s:3:"Ⳍ";s:3:"ⳍ";s:3:"Ⳏ";s:3:"ⳏ";s:3:"Ⳑ";s:3:"ⳑ";s:3:"Ⳓ";s:3:"ⳓ";s:3:"Ⳕ";s:3:"ⳕ";s:3:"Ⳗ";s:3:"ⳗ";s:3:"Ⳙ";s:3:"ⳙ";s:3:"Ⳛ";s:3:"ⳛ";s:3:"Ⳝ";s:3:"ⳝ";s:3:"Ⳟ";s:3:"ⳟ";s:3:"Ⳡ";s:3:"ⳡ";s:3:"Ⳣ";s:3:"ⳣ";s:3:"Ⳬ";s:3:"ⳬ";s:3:"Ⳮ";s:3:"ⳮ";s:3:"Ⳳ";s:3:"ⳳ";s:3:"Ꙁ";s:3:"ꙁ";s:3:"Ꙃ";s:3:"ꙃ";s:3:"Ꙅ";s:3:"ꙅ";s:3:"Ꙇ";s:3:"ꙇ";s:3:"Ꙉ";s:3:"ꙉ";s:3:"Ꙋ";s:3:"ꙋ";s:3:"Ꙍ";s:3:"ꙍ";s:3:"Ꙏ";s:3:"ꙏ";s:3:"Ꙑ";s:3:"ꙑ";s:3:"Ꙓ";s:3:"ꙓ";s:3:"Ꙕ";s:3:"ꙕ";s:3:"Ꙗ";s:3:"ꙗ";s:3:"Ꙙ";s:3:"ꙙ";s:3:"Ꙛ";s:3:"ꙛ";s:3:"Ꙝ";s:3:"ꙝ";s:3:"Ꙟ";s:3:"ꙟ";s:3:"Ꙡ";s:3:"ꙡ";s:3:"Ꙣ";s:3:"ꙣ";s:3:"Ꙥ";s:3:"ꙥ";s:3:"Ꙧ";s:3:"ꙧ";s:3:"Ꙩ";s:3:"ꙩ";s:3:"Ꙫ";s:3:"ꙫ";s:3:"Ꙭ";s:3:"ꙭ";s:3:"Ꚁ";s:3:"ꚁ";s:3:"Ꚃ";s:3:"ꚃ";s:3:"Ꚅ";s:3:"ꚅ";s:3:"Ꚇ";s:3:"ꚇ";s:3:"Ꚉ";s:3:"ꚉ";s:3:"Ꚋ";s:3:"ꚋ";s:3:"Ꚍ";s:3:"ꚍ";s:3:"Ꚏ";s:3:"ꚏ";s:3:"Ꚑ";s:3:"ꚑ";s:3:"Ꚓ";s:3:"ꚓ";s:3:"Ꚕ";s:3:"ꚕ";s:3:"Ꚗ";s:3:"ꚗ";s:3:"Ꚙ";s:3:"ꚙ";s:3:"Ꚛ";s:3:"ꚛ";s:3:"Ꜣ";s:3:"ꜣ";s:3:"Ꜥ";s:3:"ꜥ";s:3:"Ꜧ";s:3:"ꜧ";s:3:"Ꜩ";s:3:"ꜩ";s:3:"Ꜫ";s:3:"ꜫ";s:3:"Ꜭ";s:3:"ꜭ";s:3:"Ꜯ";s:3:"ꜯ";s:3:"Ꜳ";s:3:"ꜳ";s:3:"Ꜵ";s:3:"ꜵ";s:3:"Ꜷ";s:3:"ꜷ";s:3:"Ꜹ";s:3:"ꜹ";s:3:"Ꜻ";s:3:"ꜻ";s:3:"Ꜽ";s:3:"ꜽ";s:3:"Ꜿ";s:3:"ꜿ";s:3:"Ꝁ";s:3:"ꝁ";s:3:"Ꝃ";s:3:"ꝃ";s:3:"Ꝅ";s:3:"ꝅ";s:3:"Ꝇ";s:3:"ꝇ";s:3:"Ꝉ";s:3:"ꝉ";s:3:"Ꝋ";s:3:"ꝋ";s:3:"Ꝍ";s:3:"ꝍ";s:3:"Ꝏ";s:3:"ꝏ";s:3:"Ꝑ";s:3:"ꝑ";s:3:"Ꝓ";s:3:"ꝓ";s:3:"Ꝕ";s:3:"ꝕ";s:3:"Ꝗ";s:3:"ꝗ";s:3:"Ꝙ";s:3:"ꝙ";s:3:"Ꝛ";s:3:"ꝛ";s:3:"Ꝝ";s:3:"ꝝ";s:3:"Ꝟ";s:3:"ꝟ";s:3:"Ꝡ";s:3:"ꝡ";s:3:"Ꝣ";s:3:"ꝣ";s:3:"Ꝥ";s:3:"ꝥ";s:3:"Ꝧ";s:3:"ꝧ";s:3:"Ꝩ";s:3:"ꝩ";s:3:"Ꝫ";s:3:"ꝫ";s:3:"Ꝭ";s:3:"ꝭ";s:3:"Ꝯ";s:3:"ꝯ";s:3:"Ꝺ";s:3:"ꝺ";s:3:"Ꝼ";s:3:"ꝼ";s:3:"Ᵹ";s:3:"ᵹ";s:3:"Ꝿ";s:3:"ꝿ";s:3:"Ꞁ";s:3:"ꞁ";s:3:"Ꞃ";s:3:"ꞃ";s:3:"Ꞅ";s:3:"ꞅ";s:3:"Ꞇ";s:3:"ꞇ";s:3:"Ꞌ";s:3:"ꞌ";s:3:"Ɥ";s:2:"ɥ";s:3:"Ꞑ";s:3:"ꞑ";s:3:"Ꞓ";s:3:"ꞓ";s:3:"Ꞗ";s:3:"ꞗ";s:3:"Ꞙ";s:3:"ꞙ";s:3:"Ꞛ";s:3:"ꞛ";s:3:"Ꞝ";s:3:"ꞝ";s:3:"Ꞟ";s:3:"ꞟ";s:3:"Ꞡ";s:3:"ꞡ";s:3:"Ꞣ";s:3:"ꞣ";s:3:"Ꞥ";s:3:"ꞥ";s:3:"Ꞧ";s:3:"ꞧ";s:3:"Ꞩ";s:3:"ꞩ";s:3:"Ɦ";s:2:"ɦ";s:3:"Ɜ";s:2:"ɜ";s:3:"Ɡ";s:2:"ɡ";s:3:"Ɬ";s:2:"ɬ";s:3:"Ʞ";s:2:"ʞ";s:3:"Ʇ";s:2:"ʇ";s:3:"Ａ";s:3:"ａ";s:3:"Ｂ";s:3:"ｂ";s:3:"Ｃ";s:3:"ｃ";s:3:"Ｄ";s:3:"ｄ";s:3:"Ｅ";s:3:"ｅ";s:3:"Ｆ";s:3:"ｆ";s:3:"Ｇ";s:3:"ｇ";s:3:"Ｈ";s:3:"ｈ";s:3:"Ｉ";s:3:"ｉ";s:3:"Ｊ";s:3:"ｊ";s:3:"Ｋ";s:3:"ｋ";s:3:"Ｌ";s:3:"ｌ";s:3:"Ｍ";s:3:"ｍ";s:3:"Ｎ";s:3:"ｎ";s:3:"Ｏ";s:3:"ｏ";s:3:"Ｐ";s:3:"ｐ";s:3:"Ｑ";s:3:"ｑ";s:3:"Ｒ";s:3:"ｒ";s:3:"Ｓ";s:3:"ｓ";s:3:"Ｔ";s:3:"ｔ";s:3:"Ｕ";s:3:"ｕ";s:3:"Ｖ";s:3:"ｖ";s:3:"Ｗ";s:3:"ｗ";s:3:"Ｘ";s:3:"ｘ";s:3:"Ｙ";s:3:"ｙ";s:3:"Ｚ";s:3:"ｚ";s:4:"𐐀";s:4:"𐐨";s:4:"𐐁";s:4:"𐐩";s:4:"𐐂";s:4:"𐐪";s:4:"𐐃";s:4:"𐐫";s:4:"𐐄";s:4:"𐐬";s:4:"𐐅";s:4:"𐐭";s:4:"𐐆";s:4:"𐐮";s:4:"𐐇";s:4:"𐐯";s:4:"𐐈";s:4:"𐐰";s:4:"𐐉";s:4:"𐐱";s:4:"𐐊";s:4:"𐐲";s:4:"𐐋";s:4:"𐐳";s:4:"𐐌";s:4:"𐐴";s:4:"𐐍";s:4:"𐐵";s:4:"𐐎";s:4:"𐐶";s:4:"𐐏";s:4:"𐐷";s:4:"𐐐";s:4:"𐐸";s:4:"𐐑";s:4:"𐐹";s:4:"𐐒";s:4:"𐐺";s:4:"𐐓";s:4:"𐐻";s:4:"𐐔";s:4:"𐐼";s:4:"𐐕";s:4:"𐐽";s:4:"𐐖";s:4:"𐐾";s:4:"𐐗";s:4:"𐐿";s:4:"𐐘";s:4:"𐑀";s:4:"𐐙";s:4:"𐑁";s:4:"𐐚";s:4:"𐑂";s:4:"𐐛";s:4:"𐑃";s:4:"𐐜";s:4:"𐑄";s:4:"𐐝";s:4:"𐑅";s:4:"𐐞";s:4:"𐑆";s:4:"𐐟";s:4:"𐑇";s:4:"𐐠";s:4:"𐑈";s:4:"𐐡";s:4:"𐑉";s:4:"𐐢";s:4:"𐑊";s:4:"𐐣";s:4:"𐑋";s:4:"𐐤";s:4:"𐑌";s:4:"𐐥";s:4:"𐑍";s:4:"𐐦";s:4:"𐑎";s:4:"𐐧";s:4:"𐑏";s:4:"𑢠";s:4:"𑣀";s:4:"𑢡";s:4:"𑣁";s:4:"𑢢";s:4:"𑣂";s:4:"𑢣";s:4:"𑣃";s:4:"𑢤";s:4:"𑣄";s:4:"𑢥";s:4:"𑣅";s:4:"𑢦";s:4:"𑣆";s:4:"𑢧";s:4:"𑣇";s:4:"𑢨";s:4:"𑣈";s:4:"𑢩";s:4:"𑣉";s:4:"𑢪";s:4:"𑣊";s:4:"𑢫";s:4:"𑣋";s:4:"𑢬";s:4:"𑣌";s:4:"𑢭";s:4:"𑣍";s:4:"𑢮";s:4:"𑣎";s:4:"𑢯";s:4:"𑣏";s:4:"𑢰";s:4:"𑣐";s:4:"𑢱";s:4:"𑣑";s:4:"𑢲";s:4:"𑣒";s:4:"𑢳";s:4:"𑣓";s:4:"𑢴";s:4:"𑣔";s:4:"𑢵";s:4:"𑣕";s:4:"𑢶";s:4:"𑣖";s:4:"𑢷";s:4:"𑣗";s:4:"𑢸";s:4:"𑣘";s:4:"𑢹";s:4:"𑣙";s:4:"𑢺";s:4:"𑣚";s:4:"𑢻";s:4:"𑣛";s:4:"𑢼";s:4:"𑣜";s:4:"𑢽";s:4:"𑣝";s:4:"𑢾";s:4:"𑣞";s:4:"𑢿";s:4:"𑣟";}
\ No newline at end of file
diff --git a/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.ser b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.ser
new file mode 100644
index 0000000..e9e0ec2
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.ser
@@ -0,0 +1 @@
+a:1100:{s:1:"a";s:1:"A";s:1:"b";s:1:"B";s:1:"c";s:1:"C";s:1:"d";s:1:"D";s:1:"e";s:1:"E";s:1:"f";s:1:"F";s:1:"g";s:1:"G";s:1:"h";s:1:"H";s:1:"i";s:1:"I";s:1:"j";s:1:"J";s:1:"k";s:1:"K";s:1:"l";s:1:"L";s:1:"m";s:1:"M";s:1:"n";s:1:"N";s:1:"o";s:1:"O";s:1:"p";s:1:"P";s:1:"q";s:1:"Q";s:1:"r";s:1:"R";s:1:"s";s:1:"S";s:1:"t";s:1:"T";s:1:"u";s:1:"U";s:1:"v";s:1:"V";s:1:"w";s:1:"W";s:1:"x";s:1:"X";s:1:"y";s:1:"Y";s:1:"z";s:1:"Z";s:2:"µ";s:2:"Μ";s:2:"à";s:2:"À";s:2:"á";s:2:"Á";s:2:"â";s:2:"Â";s:2:"ã";s:2:"Ã";s:2:"ä";s:2:"Ä";s:2:"å";s:2:"Å";s:2:"æ";s:2:"Æ";s:2:"ç";s:2:"Ç";s:2:"è";s:2:"È";s:2:"é";s:2:"É";s:2:"ê";s:2:"Ê";s:2:"ë";s:2:"Ë";s:2:"ì";s:2:"Ì";s:2:"í";s:2:"Í";s:2:"î";s:2:"Î";s:2:"ï";s:2:"Ï";s:2:"ð";s:2:"Ð";s:2:"ñ";s:2:"Ñ";s:2:"ò";s:2:"Ò";s:2:"ó";s:2:"Ó";s:2:"ô";s:2:"Ô";s:2:"õ";s:2:"Õ";s:2:"ö";s:2:"Ö";s:2:"ø";s:2:"Ø";s:2:"ù";s:2:"Ù";s:2:"ú";s:2:"Ú";s:2:"û";s:2:"Û";s:2:"ü";s:2:"Ü";s:2:"ý";s:2:"Ý";s:2:"þ";s:2:"Þ";s:2:"ÿ";s:2:"Ÿ";s:2:"ā";s:2:"Ā";s:2:"ă";s:2:"Ă";s:2:"ą";s:2:"Ą";s:2:"ć";s:2:"Ć";s:2:"ĉ";s:2:"Ĉ";s:2:"ċ";s:2:"Ċ";s:2:"č";s:2:"Č";s:2:"ď";s:2:"Ď";s:2:"đ";s:2:"Đ";s:2:"ē";s:2:"Ē";s:2:"ĕ";s:2:"Ĕ";s:2:"ė";s:2:"Ė";s:2:"ę";s:2:"Ę";s:2:"ě";s:2:"Ě";s:2:"ĝ";s:2:"Ĝ";s:2:"ğ";s:2:"Ğ";s:2:"ġ";s:2:"Ġ";s:2:"ģ";s:2:"Ģ";s:2:"ĥ";s:2:"Ĥ";s:2:"ħ";s:2:"Ħ";s:2:"ĩ";s:2:"Ĩ";s:2:"ī";s:2:"Ī";s:2:"ĭ";s:2:"Ĭ";s:2:"į";s:2:"Į";s:2:"ı";s:1:"I";s:2:"ĳ";s:2:"Ĳ";s:2:"ĵ";s:2:"Ĵ";s:2:"ķ";s:2:"Ķ";s:2:"ĺ";s:2:"Ĺ";s:2:"ļ";s:2:"Ļ";s:2:"ľ";s:2:"Ľ";s:2:"ŀ";s:2:"Ŀ";s:2:"ł";s:2:"Ł";s:2:"ń";s:2:"Ń";s:2:"ņ";s:2:"Ņ";s:2:"ň";s:2:"Ň";s:2:"ŋ";s:2:"Ŋ";s:2:"ō";s:2:"Ō";s:2:"ŏ";s:2:"Ŏ";s:2:"ő";s:2:"Ő";s:2:"œ";s:2:"Œ";s:2:"ŕ";s:2:"Ŕ";s:2:"ŗ";s:2:"Ŗ";s:2:"ř";s:2:"Ř";s:2:"ś";s:2:"Ś";s:2:"ŝ";s:2:"Ŝ";s:2:"ş";s:2:"Ş";s:2:"š";s:2:"Š";s:2:"ţ";s:2:"Ţ";s:2:"ť";s:2:"Ť";s:2:"ŧ";s:2:"Ŧ";s:2:"ũ";s:2:"Ũ";s:2:"ū";s:2:"Ū";s:2:"ŭ";s:2:"Ŭ";s:2:"ů";s:2:"Ů";s:2:"ű";s:2:"Ű";s:2:"ų";s:2:"Ų";s:2:"ŵ";s:2:"Ŵ";s:2:"ŷ";s:2:"Ŷ";s:2:"ź";s:2:"Ź";s:2:"ż";s:2:"Ż";s:2:"ž";s:2:"Ž";s:2:"ſ";s:1:"S";s:2:"ƀ";s:2:"Ƀ";s:2:"ƃ";s:2:"Ƃ";s:2:"ƅ";s:2:"Ƅ";s:2:"ƈ";s:2:"Ƈ";s:2:"ƌ";s:2:"Ƌ";s:2:"ƒ";s:2:"Ƒ";s:2:"ƕ";s:2:"Ƕ";s:2:"ƙ";s:2:"Ƙ";s:2:"ƚ";s:2:"Ƚ";s:2:"ƞ";s:2:"Ƞ";s:2:"ơ";s:2:"Ơ";s:2:"ƣ";s:2:"Ƣ";s:2:"ƥ";s:2:"Ƥ";s:2:"ƨ";s:2:"Ƨ";s:2:"ƭ";s:2:"Ƭ";s:2:"ư";s:2:"Ư";s:2:"ƴ";s:2:"Ƴ";s:2:"ƶ";s:2:"Ƶ";s:2:"ƹ";s:2:"Ƹ";s:2:"ƽ";s:2:"Ƽ";s:2:"ƿ";s:2:"Ƿ";s:2:"ǅ";s:2:"Ǆ";s:2:"ǆ";s:2:"Ǆ";s:2:"ǈ";s:2:"Ǉ";s:2:"ǉ";s:2:"Ǉ";s:2:"ǋ";s:2:"Ǌ";s:2:"ǌ";s:2:"Ǌ";s:2:"ǎ";s:2:"Ǎ";s:2:"ǐ";s:2:"Ǐ";s:2:"ǒ";s:2:"Ǒ";s:2:"ǔ";s:2:"Ǔ";s:2:"ǖ";s:2:"Ǖ";s:2:"ǘ";s:2:"Ǘ";s:2:"ǚ";s:2:"Ǚ";s:2:"ǜ";s:2:"Ǜ";s:2:"ǝ";s:2:"Ǝ";s:2:"ǟ";s:2:"Ǟ";s:2:"ǡ";s:2:"Ǡ";s:2:"ǣ";s:2:"Ǣ";s:2:"ǥ";s:2:"Ǥ";s:2:"ǧ";s:2:"Ǧ";s:2:"ǩ";s:2:"Ǩ";s:2:"ǫ";s:2:"Ǫ";s:2:"ǭ";s:2:"Ǭ";s:2:"ǯ";s:2:"Ǯ";s:2:"ǲ";s:2:"Ǳ";s:2:"ǳ";s:2:"Ǳ";s:2:"ǵ";s:2:"Ǵ";s:2:"ǹ";s:2:"Ǹ";s:2:"ǻ";s:2:"Ǻ";s:2:"ǽ";s:2:"Ǽ";s:2:"ǿ";s:2:"Ǿ";s:2:"ȁ";s:2:"Ȁ";s:2:"ȃ";s:2:"Ȃ";s:2:"ȅ";s:2:"Ȅ";s:2:"ȇ";s:2:"Ȇ";s:2:"ȉ";s:2:"Ȉ";s:2:"ȋ";s:2:"Ȋ";s:2:"ȍ";s:2:"Ȍ";s:2:"ȏ";s:2:"Ȏ";s:2:"ȑ";s:2:"Ȑ";s:2:"ȓ";s:2:"Ȓ";s:2:"ȕ";s:2:"Ȕ";s:2:"ȗ";s:2:"Ȗ";s:2:"ș";s:2:"Ș";s:2:"ț";s:2:"Ț";s:2:"ȝ";s:2:"Ȝ";s:2:"ȟ";s:2:"Ȟ";s:2:"ȣ";s:2:"Ȣ";s:2:"ȥ";s:2:"Ȥ";s:2:"ȧ";s:2:"Ȧ";s:2:"ȩ";s:2:"Ȩ";s:2:"ȫ";s:2:"Ȫ";s:2:"ȭ";s:2:"Ȭ";s:2:"ȯ";s:2:"Ȯ";s:2:"ȱ";s:2:"Ȱ";s:2:"ȳ";s:2:"Ȳ";s:2:"ȼ";s:2:"Ȼ";s:2:"ȿ";s:3:"Ȿ";s:2:"ɀ";s:3:"Ɀ";s:2:"ɂ";s:2:"Ɂ";s:2:"ɇ";s:2:"Ɇ";s:2:"ɉ";s:2:"Ɉ";s:2:"ɋ";s:2:"Ɋ";s:2:"ɍ";s:2:"Ɍ";s:2:"ɏ";s:2:"Ɏ";s:2:"ɐ";s:3:"Ɐ";s:2:"ɑ";s:3:"Ɑ";s:2:"ɒ";s:3:"Ɒ";s:2:"ɓ";s:2:"Ɓ";s:2:"ɔ";s:2:"Ɔ";s:2:"ɖ";s:2:"Ɖ";s:2:"ɗ";s:2:"Ɗ";s:2:"ə";s:2:"Ə";s:2:"ɛ";s:2:"Ɛ";s:2:"ɜ";s:3:"Ɜ";s:2:"ɠ";s:2:"Ɠ";s:2:"ɡ";s:3:"Ɡ";s:2:"ɣ";s:2:"Ɣ";s:2:"ɥ";s:3:"Ɥ";s:2:"ɦ";s:3:"Ɦ";s:2:"ɨ";s:2:"Ɨ";s:2:"ɩ";s:2:"Ɩ";s:2:"ɫ";s:3:"Ɫ";s:2:"ɬ";s:3:"Ɬ";s:2:"ɯ";s:2:"Ɯ";s:2:"ɱ";s:3:"Ɱ";s:2:"ɲ";s:2:"Ɲ";s:2:"ɵ";s:2:"Ɵ";s:2:"ɽ";s:3:"Ɽ";s:2:"ʀ";s:2:"Ʀ";s:2:"ʃ";s:2:"Ʃ";s:2:"ʇ";s:3:"Ʇ";s:2:"ʈ";s:2:"Ʈ";s:2:"ʉ";s:2:"Ʉ";s:2:"ʊ";s:2:"Ʊ";s:2:"ʋ";s:2:"Ʋ";s:2:"ʌ";s:2:"Ʌ";s:2:"ʒ";s:2:"Ʒ";s:2:"ʞ";s:3:"Ʞ";s:2:"ͅ";s:2:"Ι";s:2:"ͱ";s:2:"Ͱ";s:2:"ͳ";s:2:"Ͳ";s:2:"ͷ";s:2:"Ͷ";s:2:"ͻ";s:2:"Ͻ";s:2:"ͼ";s:2:"Ͼ";s:2:"ͽ";s:2:"Ͽ";s:2:"ά";s:2:"Ά";s:2:"έ";s:2:"Έ";s:2:"ή";s:2:"Ή";s:2:"ί";s:2:"Ί";s:2:"α";s:2:"Α";s:2:"β";s:2:"Β";s:2:"γ";s:2:"Γ";s:2:"δ";s:2:"Δ";s:2:"ε";s:2:"Ε";s:2:"ζ";s:2:"Ζ";s:2:"η";s:2:"Η";s:2:"θ";s:2:"Θ";s:2:"ι";s:2:"Ι";s:2:"κ";s:2:"Κ";s:2:"λ";s:2:"Λ";s:2:"μ";s:2:"Μ";s:2:"ν";s:2:"Ν";s:2:"ξ";s:2:"Ξ";s:2:"ο";s:2:"Ο";s:2:"π";s:2:"Π";s:2:"ρ";s:2:"Ρ";s:2:"ς";s:2:"Σ";s:2:"σ";s:2:"Σ";s:2:"τ";s:2:"Τ";s:2:"υ";s:2:"Υ";s:2:"φ";s:2:"Φ";s:2:"χ";s:2:"Χ";s:2:"ψ";s:2:"Ψ";s:2:"ω";s:2:"Ω";s:2:"ϊ";s:2:"Ϊ";s:2:"ϋ";s:2:"Ϋ";s:2:"ό";s:2:"Ό";s:2:"ύ";s:2:"Ύ";s:2:"ώ";s:2:"Ώ";s:2:"ϐ";s:2:"Β";s:2:"ϑ";s:2:"Θ";s:2:"ϕ";s:2:"Φ";s:2:"ϖ";s:2:"Π";s:2:"ϗ";s:2:"Ϗ";s:2:"ϙ";s:2:"Ϙ";s:2:"ϛ";s:2:"Ϛ";s:2:"ϝ";s:2:"Ϝ";s:2:"ϟ";s:2:"Ϟ";s:2:"ϡ";s:2:"Ϡ";s:2:"ϣ";s:2:"Ϣ";s:2:"ϥ";s:2:"Ϥ";s:2:"ϧ";s:2:"Ϧ";s:2:"ϩ";s:2:"Ϩ";s:2:"ϫ";s:2:"Ϫ";s:2:"ϭ";s:2:"Ϭ";s:2:"ϯ";s:2:"Ϯ";s:2:"ϰ";s:2:"Κ";s:2:"ϱ";s:2:"Ρ";s:2:"ϲ";s:2:"Ϲ";s:2:"ϳ";s:2:"Ϳ";s:2:"ϵ";s:2:"Ε";s:2:"ϸ";s:2:"Ϸ";s:2:"ϻ";s:2:"Ϻ";s:2:"а";s:2:"А";s:2:"б";s:2:"Б";s:2:"в";s:2:"В";s:2:"г";s:2:"Г";s:2:"д";s:2:"Д";s:2:"е";s:2:"Е";s:2:"ж";s:2:"Ж";s:2:"з";s:2:"З";s:2:"и";s:2:"И";s:2:"й";s:2:"Й";s:2:"к";s:2:"К";s:2:"л";s:2:"Л";s:2:"м";s:2:"М";s:2:"н";s:2:"Н";s:2:"о";s:2:"О";s:2:"п";s:2:"П";s:2:"р";s:2:"Р";s:2:"с";s:2:"С";s:2:"т";s:2:"Т";s:2:"у";s:2:"У";s:2:"ф";s:2:"Ф";s:2:"х";s:2:"Х";s:2:"ц";s:2:"Ц";s:2:"ч";s:2:"Ч";s:2:"ш";s:2:"Ш";s:2:"щ";s:2:"Щ";s:2:"ъ";s:2:"Ъ";s:2:"ы";s:2:"Ы";s:2:"ь";s:2:"Ь";s:2:"э";s:2:"Э";s:2:"ю";s:2:"Ю";s:2:"я";s:2:"Я";s:2:"ѐ";s:2:"Ѐ";s:2:"ё";s:2:"Ё";s:2:"ђ";s:2:"Ђ";s:2:"ѓ";s:2:"Ѓ";s:2:"є";s:2:"Є";s:2:"ѕ";s:2:"Ѕ";s:2:"і";s:2:"І";s:2:"ї";s:2:"Ї";s:2:"ј";s:2:"Ј";s:2:"љ";s:2:"Љ";s:2:"њ";s:2:"Њ";s:2:"ћ";s:2:"Ћ";s:2:"ќ";s:2:"Ќ";s:2:"ѝ";s:2:"Ѝ";s:2:"ў";s:2:"Ў";s:2:"џ";s:2:"Џ";s:2:"ѡ";s:2:"Ѡ";s:2:"ѣ";s:2:"Ѣ";s:2:"ѥ";s:2:"Ѥ";s:2:"ѧ";s:2:"Ѧ";s:2:"ѩ";s:2:"Ѩ";s:2:"ѫ";s:2:"Ѫ";s:2:"ѭ";s:2:"Ѭ";s:2:"ѯ";s:2:"Ѯ";s:2:"ѱ";s:2:"Ѱ";s:2:"ѳ";s:2:"Ѳ";s:2:"ѵ";s:2:"Ѵ";s:2:"ѷ";s:2:"Ѷ";s:2:"ѹ";s:2:"Ѹ";s:2:"ѻ";s:2:"Ѻ";s:2:"ѽ";s:2:"Ѽ";s:2:"ѿ";s:2:"Ѿ";s:2:"ҁ";s:2:"Ҁ";s:2:"ҋ";s:2:"Ҋ";s:2:"ҍ";s:2:"Ҍ";s:2:"ҏ";s:2:"Ҏ";s:2:"ґ";s:2:"Ґ";s:2:"ғ";s:2:"Ғ";s:2:"ҕ";s:2:"Ҕ";s:2:"җ";s:2:"Җ";s:2:"ҙ";s:2:"Ҙ";s:2:"қ";s:2:"Қ";s:2:"ҝ";s:2:"Ҝ";s:2:"ҟ";s:2:"Ҟ";s:2:"ҡ";s:2:"Ҡ";s:2:"ң";s:2:"Ң";s:2:"ҥ";s:2:"Ҥ";s:2:"ҧ";s:2:"Ҧ";s:2:"ҩ";s:2:"Ҩ";s:2:"ҫ";s:2:"Ҫ";s:2:"ҭ";s:2:"Ҭ";s:2:"ү";s:2:"Ү";s:2:"ұ";s:2:"Ұ";s:2:"ҳ";s:2:"Ҳ";s:2:"ҵ";s:2:"Ҵ";s:2:"ҷ";s:2:"Ҷ";s:2:"ҹ";s:2:"Ҹ";s:2:"һ";s:2:"Һ";s:2:"ҽ";s:2:"Ҽ";s:2:"ҿ";s:2:"Ҿ";s:2:"ӂ";s:2:"Ӂ";s:2:"ӄ";s:2:"Ӄ";s:2:"ӆ";s:2:"Ӆ";s:2:"ӈ";s:2:"Ӈ";s:2:"ӊ";s:2:"Ӊ";s:2:"ӌ";s:2:"Ӌ";s:2:"ӎ";s:2:"Ӎ";s:2:"ӏ";s:2:"Ӏ";s:2:"ӑ";s:2:"Ӑ";s:2:"ӓ";s:2:"Ӓ";s:2:"ӕ";s:2:"Ӕ";s:2:"ӗ";s:2:"Ӗ";s:2:"ә";s:2:"Ә";s:2:"ӛ";s:2:"Ӛ";s:2:"ӝ";s:2:"Ӝ";s:2:"ӟ";s:2:"Ӟ";s:2:"ӡ";s:2:"Ӡ";s:2:"ӣ";s:2:"Ӣ";s:2:"ӥ";s:2:"Ӥ";s:2:"ӧ";s:2:"Ӧ";s:2:"ө";s:2:"Ө";s:2:"ӫ";s:2:"Ӫ";s:2:"ӭ";s:2:"Ӭ";s:2:"ӯ";s:2:"Ӯ";s:2:"ӱ";s:2:"Ӱ";s:2:"ӳ";s:2:"Ӳ";s:2:"ӵ";s:2:"Ӵ";s:2:"ӷ";s:2:"Ӷ";s:2:"ӹ";s:2:"Ӹ";s:2:"ӻ";s:2:"Ӻ";s:2:"ӽ";s:2:"Ӽ";s:2:"ӿ";s:2:"Ӿ";s:2:"ԁ";s:2:"Ԁ";s:2:"ԃ";s:2:"Ԃ";s:2:"ԅ";s:2:"Ԅ";s:2:"ԇ";s:2:"Ԇ";s:2:"ԉ";s:2:"Ԉ";s:2:"ԋ";s:2:"Ԋ";s:2:"ԍ";s:2:"Ԍ";s:2:"ԏ";s:2:"Ԏ";s:2:"ԑ";s:2:"Ԑ";s:2:"ԓ";s:2:"Ԓ";s:2:"ԕ";s:2:"Ԕ";s:2:"ԗ";s:2:"Ԗ";s:2:"ԙ";s:2:"Ԙ";s:2:"ԛ";s:2:"Ԛ";s:2:"ԝ";s:2:"Ԝ";s:2:"ԟ";s:2:"Ԟ";s:2:"ԡ";s:2:"Ԡ";s:2:"ԣ";s:2:"Ԣ";s:2:"ԥ";s:2:"Ԥ";s:2:"ԧ";s:2:"Ԧ";s:2:"ԩ";s:2:"Ԩ";s:2:"ԫ";s:2:"Ԫ";s:2:"ԭ";s:2:"Ԭ";s:2:"ԯ";s:2:"Ԯ";s:2:"ա";s:2:"Ա";s:2:"բ";s:2:"Բ";s:2:"գ";s:2:"Գ";s:2:"դ";s:2:"Դ";s:2:"ե";s:2:"Ե";s:2:"զ";s:2:"Զ";s:2:"է";s:2:"Է";s:2:"ը";s:2:"Ը";s:2:"թ";s:2:"Թ";s:2:"ժ";s:2:"Ժ";s:2:"ի";s:2:"Ի";s:2:"լ";s:2:"Լ";s:2:"խ";s:2:"Խ";s:2:"ծ";s:2:"Ծ";s:2:"կ";s:2:"Կ";s:2:"հ";s:2:"Հ";s:2:"ձ";s:2:"Ձ";s:2:"ղ";s:2:"Ղ";s:2:"ճ";s:2:"Ճ";s:2:"մ";s:2:"Մ";s:2:"յ";s:2:"Յ";s:2:"ն";s:2:"Ն";s:2:"շ";s:2:"Շ";s:2:"ո";s:2:"Ո";s:2:"չ";s:2:"Չ";s:2:"պ";s:2:"Պ";s:2:"ջ";s:2:"Ջ";s:2:"ռ";s:2:"Ռ";s:2:"ս";s:2:"Ս";s:2:"վ";s:2:"Վ";s:2:"տ";s:2:"Տ";s:2:"ր";s:2:"Ր";s:2:"ց";s:2:"Ց";s:2:"ւ";s:2:"Ւ";s:2:"փ";s:2:"Փ";s:2:"ք";s:2:"Ք";s:2:"օ";s:2:"Օ";s:2:"ֆ";s:2:"Ֆ";s:3:"ᵹ";s:3:"Ᵹ";s:3:"ᵽ";s:3:"Ᵽ";s:3:"ḁ";s:3:"Ḁ";s:3:"ḃ";s:3:"Ḃ";s:3:"ḅ";s:3:"Ḅ";s:3:"ḇ";s:3:"Ḇ";s:3:"ḉ";s:3:"Ḉ";s:3:"ḋ";s:3:"Ḋ";s:3:"ḍ";s:3:"Ḍ";s:3:"ḏ";s:3:"Ḏ";s:3:"ḑ";s:3:"Ḑ";s:3:"ḓ";s:3:"Ḓ";s:3:"ḕ";s:3:"Ḕ";s:3:"ḗ";s:3:"Ḗ";s:3:"ḙ";s:3:"Ḙ";s:3:"ḛ";s:3:"Ḛ";s:3:"ḝ";s:3:"Ḝ";s:3:"ḟ";s:3:"Ḟ";s:3:"ḡ";s:3:"Ḡ";s:3:"ḣ";s:3:"Ḣ";s:3:"ḥ";s:3:"Ḥ";s:3:"ḧ";s:3:"Ḧ";s:3:"ḩ";s:3:"Ḩ";s:3:"ḫ";s:3:"Ḫ";s:3:"ḭ";s:3:"Ḭ";s:3:"ḯ";s:3:"Ḯ";s:3:"ḱ";s:3:"Ḱ";s:3:"ḳ";s:3:"Ḳ";s:3:"ḵ";s:3:"Ḵ";s:3:"ḷ";s:3:"Ḷ";s:3:"ḹ";s:3:"Ḹ";s:3:"ḻ";s:3:"Ḻ";s:3:"ḽ";s:3:"Ḽ";s:3:"ḿ";s:3:"Ḿ";s:3:"ṁ";s:3:"Ṁ";s:3:"ṃ";s:3:"Ṃ";s:3:"ṅ";s:3:"Ṅ";s:3:"ṇ";s:3:"Ṇ";s:3:"ṉ";s:3:"Ṉ";s:3:"ṋ";s:3:"Ṋ";s:3:"ṍ";s:3:"Ṍ";s:3:"ṏ";s:3:"Ṏ";s:3:"ṑ";s:3:"Ṑ";s:3:"ṓ";s:3:"Ṓ";s:3:"ṕ";s:3:"Ṕ";s:3:"ṗ";s:3:"Ṗ";s:3:"ṙ";s:3:"Ṙ";s:3:"ṛ";s:3:"Ṛ";s:3:"ṝ";s:3:"Ṝ";s:3:"ṟ";s:3:"Ṟ";s:3:"ṡ";s:3:"Ṡ";s:3:"ṣ";s:3:"Ṣ";s:3:"ṥ";s:3:"Ṥ";s:3:"ṧ";s:3:"Ṧ";s:3:"ṩ";s:3:"Ṩ";s:3:"ṫ";s:3:"Ṫ";s:3:"ṭ";s:3:"Ṭ";s:3:"ṯ";s:3:"Ṯ";s:3:"ṱ";s:3:"Ṱ";s:3:"ṳ";s:3:"Ṳ";s:3:"ṵ";s:3:"Ṵ";s:3:"ṷ";s:3:"Ṷ";s:3:"ṹ";s:3:"Ṹ";s:3:"ṻ";s:3:"Ṻ";s:3:"ṽ";s:3:"Ṽ";s:3:"ṿ";s:3:"Ṿ";s:3:"ẁ";s:3:"Ẁ";s:3:"ẃ";s:3:"Ẃ";s:3:"ẅ";s:3:"Ẅ";s:3:"ẇ";s:3:"Ẇ";s:3:"ẉ";s:3:"Ẉ";s:3:"ẋ";s:3:"Ẋ";s:3:"ẍ";s:3:"Ẍ";s:3:"ẏ";s:3:"Ẏ";s:3:"ẑ";s:3:"Ẑ";s:3:"ẓ";s:3:"Ẓ";s:3:"ẕ";s:3:"Ẕ";s:3:"ẛ";s:3:"Ṡ";s:3:"ạ";s:3:"Ạ";s:3:"ả";s:3:"Ả";s:3:"ấ";s:3:"Ấ";s:3:"ầ";s:3:"Ầ";s:3:"ẩ";s:3:"Ẩ";s:3:"ẫ";s:3:"Ẫ";s:3:"ậ";s:3:"Ậ";s:3:"ắ";s:3:"Ắ";s:3:"ằ";s:3:"Ằ";s:3:"ẳ";s:3:"Ẳ";s:3:"ẵ";s:3:"Ẵ";s:3:"ặ";s:3:"Ặ";s:3:"ẹ";s:3:"Ẹ";s:3:"ẻ";s:3:"Ẻ";s:3:"ẽ";s:3:"Ẽ";s:3:"ế";s:3:"Ế";s:3:"ề";s:3:"Ề";s:3:"ể";s:3:"Ể";s:3:"ễ";s:3:"Ễ";s:3:"ệ";s:3:"Ệ";s:3:"ỉ";s:3:"Ỉ";s:3:"ị";s:3:"Ị";s:3:"ọ";s:3:"Ọ";s:3:"ỏ";s:3:"Ỏ";s:3:"ố";s:3:"Ố";s:3:"ồ";s:3:"Ồ";s:3:"ổ";s:3:"Ổ";s:3:"ỗ";s:3:"Ỗ";s:3:"ộ";s:3:"Ộ";s:3:"ớ";s:3:"Ớ";s:3:"ờ";s:3:"Ờ";s:3:"ở";s:3:"Ở";s:3:"ỡ";s:3:"Ỡ";s:3:"ợ";s:3:"Ợ";s:3:"ụ";s:3:"Ụ";s:3:"ủ";s:3:"Ủ";s:3:"ứ";s:3:"Ứ";s:3:"ừ";s:3:"Ừ";s:3:"ử";s:3:"Ử";s:3:"ữ";s:3:"Ữ";s:3:"ự";s:3:"Ự";s:3:"ỳ";s:3:"Ỳ";s:3:"ỵ";s:3:"Ỵ";s:3:"ỷ";s:3:"Ỷ";s:3:"ỹ";s:3:"Ỹ";s:3:"ỻ";s:3:"Ỻ";s:3:"ỽ";s:3:"Ỽ";s:3:"ỿ";s:3:"Ỿ";s:3:"ἀ";s:3:"Ἀ";s:3:"ἁ";s:3:"Ἁ";s:3:"ἂ";s:3:"Ἂ";s:3:"ἃ";s:3:"Ἃ";s:3:"ἄ";s:3:"Ἄ";s:3:"ἅ";s:3:"Ἅ";s:3:"ἆ";s:3:"Ἆ";s:3:"ἇ";s:3:"Ἇ";s:3:"ἐ";s:3:"Ἐ";s:3:"ἑ";s:3:"Ἑ";s:3:"ἒ";s:3:"Ἒ";s:3:"ἓ";s:3:"Ἓ";s:3:"ἔ";s:3:"Ἔ";s:3:"ἕ";s:3:"Ἕ";s:3:"ἠ";s:3:"Ἠ";s:3:"ἡ";s:3:"Ἡ";s:3:"ἢ";s:3:"Ἢ";s:3:"ἣ";s:3:"Ἣ";s:3:"ἤ";s:3:"Ἤ";s:3:"ἥ";s:3:"Ἥ";s:3:"ἦ";s:3:"Ἦ";s:3:"ἧ";s:3:"Ἧ";s:3:"ἰ";s:3:"Ἰ";s:3:"ἱ";s:3:"Ἱ";s:3:"ἲ";s:3:"Ἲ";s:3:"ἳ";s:3:"Ἳ";s:3:"ἴ";s:3:"Ἴ";s:3:"ἵ";s:3:"Ἵ";s:3:"ἶ";s:3:"Ἶ";s:3:"ἷ";s:3:"Ἷ";s:3:"ὀ";s:3:"Ὀ";s:3:"ὁ";s:3:"Ὁ";s:3:"ὂ";s:3:"Ὂ";s:3:"ὃ";s:3:"Ὃ";s:3:"ὄ";s:3:"Ὄ";s:3:"ὅ";s:3:"Ὅ";s:3:"ὑ";s:3:"Ὑ";s:3:"ὓ";s:3:"Ὓ";s:3:"ὕ";s:3:"Ὕ";s:3:"ὗ";s:3:"Ὗ";s:3:"ὠ";s:3:"Ὠ";s:3:"ὡ";s:3:"Ὡ";s:3:"ὢ";s:3:"Ὢ";s:3:"ὣ";s:3:"Ὣ";s:3:"ὤ";s:3:"Ὤ";s:3:"ὥ";s:3:"Ὥ";s:3:"ὦ";s:3:"Ὦ";s:3:"ὧ";s:3:"Ὧ";s:3:"ὰ";s:3:"Ὰ";s:3:"ά";s:3:"Ά";s:3:"ὲ";s:3:"Ὲ";s:3:"έ";s:3:"Έ";s:3:"ὴ";s:3:"Ὴ";s:3:"ή";s:3:"Ή";s:3:"ὶ";s:3:"Ὶ";s:3:"ί";s:3:"Ί";s:3:"ὸ";s:3:"Ὸ";s:3:"ό";s:3:"Ό";s:3:"ὺ";s:3:"Ὺ";s:3:"ύ";s:3:"Ύ";s:3:"ὼ";s:3:"Ὼ";s:3:"ώ";s:3:"Ώ";s:3:"ᾀ";s:3:"ᾈ";s:3:"ᾁ";s:3:"ᾉ";s:3:"ᾂ";s:3:"ᾊ";s:3:"ᾃ";s:3:"ᾋ";s:3:"ᾄ";s:3:"ᾌ";s:3:"ᾅ";s:3:"ᾍ";s:3:"ᾆ";s:3:"ᾎ";s:3:"ᾇ";s:3:"ᾏ";s:3:"ᾐ";s:3:"ᾘ";s:3:"ᾑ";s:3:"ᾙ";s:3:"ᾒ";s:3:"ᾚ";s:3:"ᾓ";s:3:"ᾛ";s:3:"ᾔ";s:3:"ᾜ";s:3:"ᾕ";s:3:"ᾝ";s:3:"ᾖ";s:3:"ᾞ";s:3:"ᾗ";s:3:"ᾟ";s:3:"ᾠ";s:3:"ᾨ";s:3:"ᾡ";s:3:"ᾩ";s:3:"ᾢ";s:3:"ᾪ";s:3:"ᾣ";s:3:"ᾫ";s:3:"ᾤ";s:3:"ᾬ";s:3:"ᾥ";s:3:"ᾭ";s:3:"ᾦ";s:3:"ᾮ";s:3:"ᾧ";s:3:"ᾯ";s:3:"ᾰ";s:3:"Ᾰ";s:3:"ᾱ";s:3:"Ᾱ";s:3:"ᾳ";s:3:"ᾼ";s:3:"ι";s:2:"Ι";s:3:"ῃ";s:3:"ῌ";s:3:"ῐ";s:3:"Ῐ";s:3:"ῑ";s:3:"Ῑ";s:3:"ῠ";s:3:"Ῠ";s:3:"ῡ";s:3:"Ῡ";s:3:"ῥ";s:3:"Ῥ";s:3:"ῳ";s:3:"ῼ";s:3:"ⅎ";s:3:"Ⅎ";s:3:"ⅰ";s:3:"Ⅰ";s:3:"ⅱ";s:3:"Ⅱ";s:3:"ⅲ";s:3:"Ⅲ";s:3:"ⅳ";s:3:"Ⅳ";s:3:"ⅴ";s:3:"Ⅴ";s:3:"ⅵ";s:3:"Ⅵ";s:3:"ⅶ";s:3:"Ⅶ";s:3:"ⅷ";s:3:"Ⅷ";s:3:"ⅸ";s:3:"Ⅸ";s:3:"ⅹ";s:3:"Ⅹ";s:3:"ⅺ";s:3:"Ⅺ";s:3:"ⅻ";s:3:"Ⅻ";s:3:"ⅼ";s:3:"Ⅼ";s:3:"ⅽ";s:3:"Ⅽ";s:3:"ⅾ";s:3:"Ⅾ";s:3:"ⅿ";s:3:"Ⅿ";s:3:"ↄ";s:3:"Ↄ";s:3:"ⓐ";s:3:"Ⓐ";s:3:"ⓑ";s:3:"Ⓑ";s:3:"ⓒ";s:3:"Ⓒ";s:3:"ⓓ";s:3:"Ⓓ";s:3:"ⓔ";s:3:"Ⓔ";s:3:"ⓕ";s:3:"Ⓕ";s:3:"ⓖ";s:3:"Ⓖ";s:3:"ⓗ";s:3:"Ⓗ";s:3:"ⓘ";s:3:"Ⓘ";s:3:"ⓙ";s:3:"Ⓙ";s:3:"ⓚ";s:3:"Ⓚ";s:3:"ⓛ";s:3:"Ⓛ";s:3:"ⓜ";s:3:"Ⓜ";s:3:"ⓝ";s:3:"Ⓝ";s:3:"ⓞ";s:3:"Ⓞ";s:3:"ⓟ";s:3:"Ⓟ";s:3:"ⓠ";s:3:"Ⓠ";s:3:"ⓡ";s:3:"Ⓡ";s:3:"ⓢ";s:3:"Ⓢ";s:3:"ⓣ";s:3:"Ⓣ";s:3:"ⓤ";s:3:"Ⓤ";s:3:"ⓥ";s:3:"Ⓥ";s:3:"ⓦ";s:3:"Ⓦ";s:3:"ⓧ";s:3:"Ⓧ";s:3:"ⓨ";s:3:"Ⓨ";s:3:"ⓩ";s:3:"Ⓩ";s:3:"ⰰ";s:3:"Ⰰ";s:3:"ⰱ";s:3:"Ⰱ";s:3:"ⰲ";s:3:"Ⰲ";s:3:"ⰳ";s:3:"Ⰳ";s:3:"ⰴ";s:3:"Ⰴ";s:3:"ⰵ";s:3:"Ⰵ";s:3:"ⰶ";s:3:"Ⰶ";s:3:"ⰷ";s:3:"Ⰷ";s:3:"ⰸ";s:3:"Ⰸ";s:3:"ⰹ";s:3:"Ⰹ";s:3:"ⰺ";s:3:"Ⰺ";s:3:"ⰻ";s:3:"Ⰻ";s:3:"ⰼ";s:3:"Ⰼ";s:3:"ⰽ";s:3:"Ⰽ";s:3:"ⰾ";s:3:"Ⰾ";s:3:"ⰿ";s:3:"Ⰿ";s:3:"ⱀ";s:3:"Ⱀ";s:3:"ⱁ";s:3:"Ⱁ";s:3:"ⱂ";s:3:"Ⱂ";s:3:"ⱃ";s:3:"Ⱃ";s:3:"ⱄ";s:3:"Ⱄ";s:3:"ⱅ";s:3:"Ⱅ";s:3:"ⱆ";s:3:"Ⱆ";s:3:"ⱇ";s:3:"Ⱇ";s:3:"ⱈ";s:3:"Ⱈ";s:3:"ⱉ";s:3:"Ⱉ";s:3:"ⱊ";s:3:"Ⱊ";s:3:"ⱋ";s:3:"Ⱋ";s:3:"ⱌ";s:3:"Ⱌ";s:3:"ⱍ";s:3:"Ⱍ";s:3:"ⱎ";s:3:"Ⱎ";s:3:"ⱏ";s:3:"Ⱏ";s:3:"ⱐ";s:3:"Ⱐ";s:3:"ⱑ";s:3:"Ⱑ";s:3:"ⱒ";s:3:"Ⱒ";s:3:"ⱓ";s:3:"Ⱓ";s:3:"ⱔ";s:3:"Ⱔ";s:3:"ⱕ";s:3:"Ⱕ";s:3:"ⱖ";s:3:"Ⱖ";s:3:"ⱗ";s:3:"Ⱗ";s:3:"ⱘ";s:3:"Ⱘ";s:3:"ⱙ";s:3:"Ⱙ";s:3:"ⱚ";s:3:"Ⱚ";s:3:"ⱛ";s:3:"Ⱛ";s:3:"ⱜ";s:3:"Ⱜ";s:3:"ⱝ";s:3:"Ⱝ";s:3:"ⱞ";s:3:"Ⱞ";s:3:"ⱡ";s:3:"Ⱡ";s:3:"ⱥ";s:2:"Ⱥ";s:3:"ⱦ";s:2:"Ⱦ";s:3:"ⱨ";s:3:"Ⱨ";s:3:"ⱪ";s:3:"Ⱪ";s:3:"ⱬ";s:3:"Ⱬ";s:3:"ⱳ";s:3:"Ⱳ";s:3:"ⱶ";s:3:"Ⱶ";s:3:"ⲁ";s:3:"Ⲁ";s:3:"ⲃ";s:3:"Ⲃ";s:3:"ⲅ";s:3:"Ⲅ";s:3:"ⲇ";s:3:"Ⲇ";s:3:"ⲉ";s:3:"Ⲉ";s:3:"ⲋ";s:3:"Ⲋ";s:3:"ⲍ";s:3:"Ⲍ";s:3:"ⲏ";s:3:"Ⲏ";s:3:"ⲑ";s:3:"Ⲑ";s:3:"ⲓ";s:3:"Ⲓ";s:3:"ⲕ";s:3:"Ⲕ";s:3:"ⲗ";s:3:"Ⲗ";s:3:"ⲙ";s:3:"Ⲙ";s:3:"ⲛ";s:3:"Ⲛ";s:3:"ⲝ";s:3:"Ⲝ";s:3:"ⲟ";s:3:"Ⲟ";s:3:"ⲡ";s:3:"Ⲡ";s:3:"ⲣ";s:3:"Ⲣ";s:3:"ⲥ";s:3:"Ⲥ";s:3:"ⲧ";s:3:"Ⲧ";s:3:"ⲩ";s:3:"Ⲩ";s:3:"ⲫ";s:3:"Ⲫ";s:3:"ⲭ";s:3:"Ⲭ";s:3:"ⲯ";s:3:"Ⲯ";s:3:"ⲱ";s:3:"Ⲱ";s:3:"ⲳ";s:3:"Ⲳ";s:3:"ⲵ";s:3:"Ⲵ";s:3:"ⲷ";s:3:"Ⲷ";s:3:"ⲹ";s:3:"Ⲹ";s:3:"ⲻ";s:3:"Ⲻ";s:3:"ⲽ";s:3:"Ⲽ";s:3:"ⲿ";s:3:"Ⲿ";s:3:"ⳁ";s:3:"Ⳁ";s:3:"ⳃ";s:3:"Ⳃ";s:3:"ⳅ";s:3:"Ⳅ";s:3:"ⳇ";s:3:"Ⳇ";s:3:"ⳉ";s:3:"Ⳉ";s:3:"ⳋ";s:3:"Ⳋ";s:3:"ⳍ";s:3:"Ⳍ";s:3:"ⳏ";s:3:"Ⳏ";s:3:"ⳑ";s:3:"Ⳑ";s:3:"ⳓ";s:3:"Ⳓ";s:3:"ⳕ";s:3:"Ⳕ";s:3:"ⳗ";s:3:"Ⳗ";s:3:"ⳙ";s:3:"Ⳙ";s:3:"ⳛ";s:3:"Ⳛ";s:3:"ⳝ";s:3:"Ⳝ";s:3:"ⳟ";s:3:"Ⳟ";s:3:"ⳡ";s:3:"Ⳡ";s:3:"ⳣ";s:3:"Ⳣ";s:3:"ⳬ";s:3:"Ⳬ";s:3:"ⳮ";s:3:"Ⳮ";s:3:"ⳳ";s:3:"Ⳳ";s:3:"ⴀ";s:3:"Ⴀ";s:3:"ⴁ";s:3:"Ⴁ";s:3:"ⴂ";s:3:"Ⴂ";s:3:"ⴃ";s:3:"Ⴃ";s:3:"ⴄ";s:3:"Ⴄ";s:3:"ⴅ";s:3:"Ⴅ";s:3:"ⴆ";s:3:"Ⴆ";s:3:"ⴇ";s:3:"Ⴇ";s:3:"ⴈ";s:3:"Ⴈ";s:3:"ⴉ";s:3:"Ⴉ";s:3:"ⴊ";s:3:"Ⴊ";s:3:"ⴋ";s:3:"Ⴋ";s:3:"ⴌ";s:3:"Ⴌ";s:3:"ⴍ";s:3:"Ⴍ";s:3:"ⴎ";s:3:"Ⴎ";s:3:"ⴏ";s:3:"Ⴏ";s:3:"ⴐ";s:3:"Ⴐ";s:3:"ⴑ";s:3:"Ⴑ";s:3:"ⴒ";s:3:"Ⴒ";s:3:"ⴓ";s:3:"Ⴓ";s:3:"ⴔ";s:3:"Ⴔ";s:3:"ⴕ";s:3:"Ⴕ";s:3:"ⴖ";s:3:"Ⴖ";s:3:"ⴗ";s:3:"Ⴗ";s:3:"ⴘ";s:3:"Ⴘ";s:3:"ⴙ";s:3:"Ⴙ";s:3:"ⴚ";s:3:"Ⴚ";s:3:"ⴛ";s:3:"Ⴛ";s:3:"ⴜ";s:3:"Ⴜ";s:3:"ⴝ";s:3:"Ⴝ";s:3:"ⴞ";s:3:"Ⴞ";s:3:"ⴟ";s:3:"Ⴟ";s:3:"ⴠ";s:3:"Ⴠ";s:3:"ⴡ";s:3:"Ⴡ";s:3:"ⴢ";s:3:"Ⴢ";s:3:"ⴣ";s:3:"Ⴣ";s:3:"ⴤ";s:3:"Ⴤ";s:3:"ⴥ";s:3:"Ⴥ";s:3:"ⴧ";s:3:"Ⴧ";s:3:"ⴭ";s:3:"Ⴭ";s:3:"ꙁ";s:3:"Ꙁ";s:3:"ꙃ";s:3:"Ꙃ";s:3:"ꙅ";s:3:"Ꙅ";s:3:"ꙇ";s:3:"Ꙇ";s:3:"ꙉ";s:3:"Ꙉ";s:3:"ꙋ";s:3:"Ꙋ";s:3:"ꙍ";s:3:"Ꙍ";s:3:"ꙏ";s:3:"Ꙏ";s:3:"ꙑ";s:3:"Ꙑ";s:3:"ꙓ";s:3:"Ꙓ";s:3:"ꙕ";s:3:"Ꙕ";s:3:"ꙗ";s:3:"Ꙗ";s:3:"ꙙ";s:3:"Ꙙ";s:3:"ꙛ";s:3:"Ꙛ";s:3:"ꙝ";s:3:"Ꙝ";s:3:"ꙟ";s:3:"Ꙟ";s:3:"ꙡ";s:3:"Ꙡ";s:3:"ꙣ";s:3:"Ꙣ";s:3:"ꙥ";s:3:"Ꙥ";s:3:"ꙧ";s:3:"Ꙧ";s:3:"ꙩ";s:3:"Ꙩ";s:3:"ꙫ";s:3:"Ꙫ";s:3:"ꙭ";s:3:"Ꙭ";s:3:"ꚁ";s:3:"Ꚁ";s:3:"ꚃ";s:3:"Ꚃ";s:3:"ꚅ";s:3:"Ꚅ";s:3:"ꚇ";s:3:"Ꚇ";s:3:"ꚉ";s:3:"Ꚉ";s:3:"ꚋ";s:3:"Ꚋ";s:3:"ꚍ";s:3:"Ꚍ";s:3:"ꚏ";s:3:"Ꚏ";s:3:"ꚑ";s:3:"Ꚑ";s:3:"ꚓ";s:3:"Ꚓ";s:3:"ꚕ";s:3:"Ꚕ";s:3:"ꚗ";s:3:"Ꚗ";s:3:"ꚙ";s:3:"Ꚙ";s:3:"ꚛ";s:3:"Ꚛ";s:3:"ꜣ";s:3:"Ꜣ";s:3:"ꜥ";s:3:"Ꜥ";s:3:"ꜧ";s:3:"Ꜧ";s:3:"ꜩ";s:3:"Ꜩ";s:3:"ꜫ";s:3:"Ꜫ";s:3:"ꜭ";s:3:"Ꜭ";s:3:"ꜯ";s:3:"Ꜯ";s:3:"ꜳ";s:3:"Ꜳ";s:3:"ꜵ";s:3:"Ꜵ";s:3:"ꜷ";s:3:"Ꜷ";s:3:"ꜹ";s:3:"Ꜹ";s:3:"ꜻ";s:3:"Ꜻ";s:3:"ꜽ";s:3:"Ꜽ";s:3:"ꜿ";s:3:"Ꜿ";s:3:"ꝁ";s:3:"Ꝁ";s:3:"ꝃ";s:3:"Ꝃ";s:3:"ꝅ";s:3:"Ꝅ";s:3:"ꝇ";s:3:"Ꝇ";s:3:"ꝉ";s:3:"Ꝉ";s:3:"ꝋ";s:3:"Ꝋ";s:3:"ꝍ";s:3:"Ꝍ";s:3:"ꝏ";s:3:"Ꝏ";s:3:"ꝑ";s:3:"Ꝑ";s:3:"ꝓ";s:3:"Ꝓ";s:3:"ꝕ";s:3:"Ꝕ";s:3:"ꝗ";s:3:"Ꝗ";s:3:"ꝙ";s:3:"Ꝙ";s:3:"ꝛ";s:3:"Ꝛ";s:3:"ꝝ";s:3:"Ꝝ";s:3:"ꝟ";s:3:"Ꝟ";s:3:"ꝡ";s:3:"Ꝡ";s:3:"ꝣ";s:3:"Ꝣ";s:3:"ꝥ";s:3:"Ꝥ";s:3:"ꝧ";s:3:"Ꝧ";s:3:"ꝩ";s:3:"Ꝩ";s:3:"ꝫ";s:3:"Ꝫ";s:3:"ꝭ";s:3:"Ꝭ";s:3:"ꝯ";s:3:"Ꝯ";s:3:"ꝺ";s:3:"Ꝺ";s:3:"ꝼ";s:3:"Ꝼ";s:3:"ꝿ";s:3:"Ꝿ";s:3:"ꞁ";s:3:"Ꞁ";s:3:"ꞃ";s:3:"Ꞃ";s:3:"ꞅ";s:3:"Ꞅ";s:3:"ꞇ";s:3:"Ꞇ";s:3:"ꞌ";s:3:"Ꞌ";s:3:"ꞑ";s:3:"Ꞑ";s:3:"ꞓ";s:3:"Ꞓ";s:3:"ꞗ";s:3:"Ꞗ";s:3:"ꞙ";s:3:"Ꞙ";s:3:"ꞛ";s:3:"Ꞛ";s:3:"ꞝ";s:3:"Ꞝ";s:3:"ꞟ";s:3:"Ꞟ";s:3:"ꞡ";s:3:"Ꞡ";s:3:"ꞣ";s:3:"Ꞣ";s:3:"ꞥ";s:3:"Ꞥ";s:3:"ꞧ";s:3:"Ꞧ";s:3:"ꞩ";s:3:"Ꞩ";s:3:"ａ";s:3:"Ａ";s:3:"ｂ";s:3:"Ｂ";s:3:"ｃ";s:3:"Ｃ";s:3:"ｄ";s:3:"Ｄ";s:3:"ｅ";s:3:"Ｅ";s:3:"ｆ";s:3:"Ｆ";s:3:"ｇ";s:3:"Ｇ";s:3:"ｈ";s:3:"Ｈ";s:3:"ｉ";s:3:"Ｉ";s:3:"ｊ";s:3:"Ｊ";s:3:"ｋ";s:3:"Ｋ";s:3:"ｌ";s:3:"Ｌ";s:3:"ｍ";s:3:"Ｍ";s:3:"ｎ";s:3:"Ｎ";s:3:"ｏ";s:3:"Ｏ";s:3:"ｐ";s:3:"Ｐ";s:3:"ｑ";s:3:"Ｑ";s:3:"ｒ";s:3:"Ｒ";s:3:"ｓ";s:3:"Ｓ";s:3:"ｔ";s:3:"Ｔ";s:3:"ｕ";s:3:"Ｕ";s:3:"ｖ";s:3:"Ｖ";s:3:"ｗ";s:3:"Ｗ";s:3:"ｘ";s:3:"Ｘ";s:3:"ｙ";s:3:"Ｙ";s:3:"ｚ";s:3:"Ｚ";s:4:"𐐨";s:4:"𐐀";s:4:"𐐩";s:4:"𐐁";s:4:"𐐪";s:4:"𐐂";s:4:"𐐫";s:4:"𐐃";s:4:"𐐬";s:4:"𐐄";s:4:"𐐭";s:4:"𐐅";s:4:"𐐮";s:4:"𐐆";s:4:"𐐯";s:4:"𐐇";s:4:"𐐰";s:4:"𐐈";s:4:"𐐱";s:4:"𐐉";s:4:"𐐲";s:4:"𐐊";s:4:"𐐳";s:4:"𐐋";s:4:"𐐴";s:4:"𐐌";s:4:"𐐵";s:4:"𐐍";s:4:"𐐶";s:4:"𐐎";s:4:"𐐷";s:4:"𐐏";s:4:"𐐸";s:4:"𐐐";s:4:"𐐹";s:4:"𐐑";s:4:"𐐺";s:4:"𐐒";s:4:"𐐻";s:4:"𐐓";s:4:"𐐼";s:4:"𐐔";s:4:"𐐽";s:4:"𐐕";s:4:"𐐾";s:4:"𐐖";s:4:"𐐿";s:4:"𐐗";s:4:"𐑀";s:4:"𐐘";s:4:"𐑁";s:4:"𐐙";s:4:"𐑂";s:4:"𐐚";s:4:"𐑃";s:4:"𐐛";s:4:"𐑄";s:4:"𐐜";s:4:"𐑅";s:4:"𐐝";s:4:"𐑆";s:4:"𐐞";s:4:"𐑇";s:4:"𐐟";s:4:"𐑈";s:4:"𐐠";s:4:"𐑉";s:4:"𐐡";s:4:"𐑊";s:4:"𐐢";s:4:"𐑋";s:4:"𐐣";s:4:"𐑌";s:4:"𐐤";s:4:"𐑍";s:4:"𐐥";s:4:"𐑎";s:4:"𐐦";s:4:"𐑏";s:4:"𐐧";s:4:"𑣀";s:4:"𑢠";s:4:"𑣁";s:4:"𑢡";s:4:"𑣂";s:4:"𑢢";s:4:"𑣃";s:4:"𑢣";s:4:"𑣄";s:4:"𑢤";s:4:"𑣅";s:4:"𑢥";s:4:"𑣆";s:4:"𑢦";s:4:"𑣇";s:4:"𑢧";s:4:"𑣈";s:4:"𑢨";s:4:"𑣉";s:4:"𑢩";s:4:"𑣊";s:4:"𑢪";s:4:"𑣋";s:4:"𑢫";s:4:"𑣌";s:4:"𑢬";s:4:"𑣍";s:4:"𑢭";s:4:"𑣎";s:4:"𑢮";s:4:"𑣏";s:4:"𑢯";s:4:"𑣐";s:4:"𑢰";s:4:"𑣑";s:4:"𑢱";s:4:"𑣒";s:4:"𑢲";s:4:"𑣓";s:4:"𑢳";s:4:"𑣔";s:4:"𑢴";s:4:"𑣕";s:4:"𑢵";s:4:"𑣖";s:4:"𑢶";s:4:"𑣗";s:4:"𑢷";s:4:"𑣘";s:4:"𑢸";s:4:"𑣙";s:4:"𑢹";s:4:"𑣚";s:4:"𑢺";s:4:"𑣛";s:4:"𑢻";s:4:"𑣜";s:4:"𑢼";s:4:"𑣝";s:4:"𑢽";s:4:"𑣞";s:4:"𑢾";s:4:"𑣟";s:4:"𑢿";}
\ No newline at end of file
diff --git a/vendor/symfony/polyfill-mbstring/bootstrap.php b/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 0000000..4b01b61
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (!function_exists('mb_strlen')) {
+    define('MB_CASE_UPPER', 0);
+    define('MB_CASE_LOWER', 1);
+    define('MB_CASE_TITLE', 2);
+
+    function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
+    function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
+    function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
+    function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
+    function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
+    function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
+    function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+    function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+    function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
+    function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
+    function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
+    function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
+    function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
+    function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
+    function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
+    function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
+    function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
+    function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
+    function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
+    function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
+    function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
+    function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
+    function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
+    function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
+    function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
+    function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+    function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
+    function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
+    function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
+    function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
+    function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
+    function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $v0, $a, $b, $c, $d, $e, $f); }
+}
diff --git a/vendor/symfony/polyfill-mbstring/composer.json b/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 0000000..978ff98
--- /dev/null
+++ b/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,34 @@
+{
+    "name": "symfony/polyfill-mbstring",
+    "type": "library",
+    "description": "Symfony polyfill for the Mbstring extension",
+    "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.3"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+        "files": [ "bootstrap.php" ]
+    },
+    "suggests": {
+        "ext-mbstring": "For best performance"
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.0-dev"
+        }
+    }
+}
diff --git a/vendor/symfony/polyfill-php54/LICENSE b/vendor/symfony/polyfill-php54/LICENSE
new file mode 100644
index 0000000..ef1cde9
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2015 Fabien Potencier
+
+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/symfony/polyfill-php54/Php54.php b/vendor/symfony/polyfill-php54/Php54.php
new file mode 100644
index 0000000..3a7eb3a
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/Php54.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php54;
+
+/**
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Php54
+{
+    public static function hex2bin($data)
+    {
+        $len = strlen($data);
+
+        if (null === $len) {
+            return;
+        }
+        if ($len % 2) {
+            trigger_error('hex2bin(): Hexadecimal input string must have an even length', E_USER_WARNING);
+
+            return false;
+        }
+
+        $data = pack('H*', $data);
+
+        if (false !== strpos($data, "\0")) {
+            return false;
+        }
+
+        return $data;
+    }
+}
diff --git a/vendor/symfony/polyfill-php54/README.md b/vendor/symfony/polyfill-php54/README.md
new file mode 100644
index 0000000..775a3ee
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/README.md
@@ -0,0 +1,17 @@
+Symfony Polyfill / Php54
+========================
+
+This component provides functions unavailable in releases prior to PHP 5.4:
+
+- [`trait_exists`](http://php.net/trait_exists)
+- [`class_uses`](http://php.net/class_uses)
+- [`hex2bin`](http://php.net/hex2bin)
+- [`session_register_shutdown`](http://php.net/session_register_shutdown)
+
+More information can be found in the 
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
\ No newline at end of file
diff --git a/vendor/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php b/vendor/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php
new file mode 100644
index 0000000..b69db3d
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class CallbackFilterIterator extends FilterIterator
+{
+    private $iterator;
+    private $callback;
+
+    public function __construct(Iterator $iterator, $callback)
+    {
+        $this->iterator = $iterator;
+        $this->callback = $callback;
+        parent::__construct($iterator);
+    }
+
+    public function accept()
+    {
+        return call_user_func($this->callback, $this->current(), $this->key(), $this->iterator);
+    }
+}
diff --git a/vendor/symfony/polyfill-php54/Resources/stubs/RecursiveCallbackFilterIterator.php b/vendor/symfony/polyfill-php54/Resources/stubs/RecursiveCallbackFilterIterator.php
new file mode 100644
index 0000000..63afd38
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/Resources/stubs/RecursiveCallbackFilterIterator.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class RecursiveCallbackFilterIterator extends CallbackFilterIterator implements RecursiveIterator
+{
+    private $iterator;
+    private $callback;
+
+    public function __construct(RecursiveIterator $iterator, $callback)
+    {
+        $this->iterator = $iterator;
+        $this->callback = $callback;
+        parent::__construct($iterator, $callback);
+    }
+
+    public function hasChildren()
+    {
+        return $this->iterator->hasChildren();
+    }
+
+    public function getChildren()
+    {
+        return new static($this->iterator->getChildren(), $this->callback);
+    }
+}
diff --git a/vendor/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php b/vendor/symfony/polyfill-php54/Resources/stubs/SessionHandlerInterface.php
similarity index 100%
rename from vendor/symfony/http-foundation/Resources/stubs/SessionHandlerInterface.php
rename to vendor/symfony/polyfill-php54/Resources/stubs/SessionHandlerInterface.php
diff --git a/vendor/symfony/polyfill-php54/bootstrap.php b/vendor/symfony/polyfill-php54/bootstrap.php
new file mode 100644
index 0000000..bb0f6b4
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/bootstrap.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php54 as p;
+
+if (PHP_VERSION_ID < 50400) {
+    if (!function_exists('trait_exists')) {
+        function trait_exists($class, $autoload = true) { return $autoload && class_exists($class, $autoload) && false; }
+    }
+    if (!function_exists('class_uses')) {
+        function class_uses($class, $autoload = true) { return $autoload && class_exists($class, $autoload) && false; }
+    }
+    if (!function_exists('hex2bin')) {
+        function hex2bin($data) { return p\Php54::hex2bin($data); }
+    }
+    if (!function_exists('session_register_shutdown')) {
+        function session_register_shutdown() { register_shutdown_function('session_write_close'); }
+    }
+}
diff --git a/vendor/symfony/polyfill-php54/composer.json b/vendor/symfony/polyfill-php54/composer.json
new file mode 100644
index 0000000..48709c2
--- /dev/null
+++ b/vendor/symfony/polyfill-php54/composer.json
@@ -0,0 +1,32 @@
+{
+    "name": "symfony/polyfill-php54",
+    "type": "library",
+    "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions",
+    "keywords": ["polyfill", "shim", "compatibility", "portable"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.3"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Polyfill\\Php54\\": "" },
+        "files": [ "bootstrap.php" ],
+        "classmap": [ "Resources/stubs" ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.0-dev"
+        }
+    }
+}
diff --git a/vendor/symfony/polyfill-php55/LICENSE b/vendor/symfony/polyfill-php55/LICENSE
new file mode 100644
index 0000000..ef1cde9
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2015 Fabien Potencier
+
+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/symfony/polyfill-php55/Php55.php b/vendor/symfony/polyfill-php55/Php55.php
new file mode 100644
index 0000000..396baf2
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/Php55.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php55;
+
+/**
+ * @internal
+ */
+final class Php55
+{
+    public static function boolval($val)
+    {
+        return (bool) $val;
+    }
+
+    public static function json_last_error_msg()
+    {
+        switch (json_last_error()) {
+            case JSON_ERROR_NONE: return 'No error';
+            case JSON_ERROR_DEPTH: return 'Maximum stack depth exceeded';
+            case JSON_ERROR_STATE_MISMATCH: return 'State mismatch (invalid or malformed JSON)';
+            case JSON_ERROR_CTRL_CHAR: return 'Control character error, possibly incorrectly encoded';
+            case JSON_ERROR_SYNTAX: return 'Syntax error';
+            case JSON_ERROR_UTF8: return 'Malformed UTF-8 characters, possibly incorrectly encoded';
+            default: return 'Unknown error';
+        }
+    }
+
+    /**
+     * @author Sebastiaan Stok <s.stok@rollerscapes.net>
+     */
+    public static function hash_pbkdf2($algorithm, $password, $salt, $iterations, $length = 0, $rawOutput = false)
+    {
+        // Number of blocks needed to create the derived key
+        $blocks = ceil($length / strlen(hash($algorithm, null, true)));
+        $digest = '';
+
+        for ($i = 1; $i <= $blocks; ++$i) {
+            $ib = $block = hash_hmac($algorithm, $salt.pack('N', $i), $password, true);
+
+            // Iterations
+            for ($j = 1; $j < $iterations; ++$j) {
+                $ib ^= ($block = hash_hmac($algorithm, $block, $password, true));
+            }
+
+            $digest .= $ib;
+        }
+
+        if (!$rawOutput) {
+            $digest = bin2hex($digest);
+        }
+
+        return substr($digest, 0, $length);
+    }
+}
diff --git a/vendor/symfony/polyfill-php55/Php55ArrayColumn.php b/vendor/symfony/polyfill-php55/Php55ArrayColumn.php
new file mode 100644
index 0000000..a3033d8
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/Php55ArrayColumn.php
@@ -0,0 +1,64 @@
+<?php
+
+/*
+ *   Copyright (c) 2013 Ben Ramsey <http://benramsey.com>
+ *
+ *   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.
+ */
+
+namespace Symfony\Polyfill\Php55;
+
+/**
+ * @internal
+ */
+final class Php55ArrayColumn
+{
+    public static function array_column(array $input, $columnKey, $indexKey = null)
+    {
+        $output = array();
+
+        foreach ($input as $row) {
+            $key = $value = null;
+            $keySet = $valueSet = false;
+
+            if ($indexKey !== null && array_key_exists($indexKey, $row)) {
+                $keySet = true;
+                $key = (string) $row[$indexKey];
+            }
+
+            if ($columnKey === null) {
+                $valueSet = true;
+                $value = $row;
+            } elseif (is_array($row) && array_key_exists($columnKey, $row)) {
+                $valueSet = true;
+                $value = $row[$columnKey];
+            }
+
+            if ($valueSet) {
+                if ($keySet) {
+                    $output[$key] = $value;
+                } else {
+                    $output[] = $value;
+                }
+            }
+        }
+
+        return $output;
+    }
+}
diff --git a/vendor/symfony/polyfill-php55/README.md b/vendor/symfony/polyfill-php55/README.md
new file mode 100644
index 0000000..018b952
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/README.md
@@ -0,0 +1,18 @@
+Symfony Polyfill / Php55
+========================
+
+This component provides functions unavailable in releases prior to PHP 5.5:
+
+- [`boolval`](http://php.net/boolval)
+- [`json_last_error_msg`](http://php.net/json_last_error_msg)
+- [`array_column`](http://php.net/array_column)
+- [`hash_pbkdf2`](http://php.net/hash_pbkdf2)
+- `password_*` functions (from [ircmaxell/password_compat](https://github.com/ircmaxell/password_compat))
+
+More information can be found in the 
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
\ No newline at end of file
diff --git a/vendor/symfony/polyfill-php55/bootstrap.php b/vendor/symfony/polyfill-php55/bootstrap.php
new file mode 100644
index 0000000..5e634fe
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/bootstrap.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php55 as p;
+
+if (PHP_VERSION_ID < 50500) {
+    if (!function_exists('boolval')) {
+        function boolval($val) { return p\Php55::boolval($val); }
+    }
+    if (!function_exists('json_last_error_msg')) {
+        function json_last_error_msg() { return p\Php55::json_last_error_msg(); }
+    }
+    if (!function_exists('array_column')) {
+        function array_column($array, $columnKey, $indexKey = null) { return p\Php55ArrayColumn::array_column($array, $columnKey, $indexKey); }
+    }
+    if (!function_exists('hash_pbkdf2')) {
+        function hash_pbkdf2($algorithm, $password, $salt, $iterations, $length = 0, $rawOutput = false) { return p\Php55::hash_pbkdf2($algorithm, $password, $salt, $iterations, $length, $rawOutput); }
+    }
+}
diff --git a/vendor/symfony/polyfill-php55/composer.json b/vendor/symfony/polyfill-php55/composer.json
new file mode 100644
index 0000000..f0edb4b
--- /dev/null
+++ b/vendor/symfony/polyfill-php55/composer.json
@@ -0,0 +1,32 @@
+{
+    "name": "symfony/polyfill-php55",
+    "type": "library",
+    "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions",
+    "keywords": ["polyfill", "shim", "compatibility", "portable"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.3",
+        "ircmaxell/password-compat": "~1.0"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Polyfill\\Php55\\": "" },
+        "files": [ "bootstrap.php" ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.0-dev"
+        }
+    }
+}
diff --git a/vendor/symfony/process/Exception/ProcessFailedException.php b/vendor/symfony/process/Exception/ProcessFailedException.php
index 7523a5e..328acfd 100644
--- a/vendor/symfony/process/Exception/ProcessFailedException.php
+++ b/vendor/symfony/process/Exception/ProcessFailedException.php
@@ -28,10 +28,11 @@ public function __construct(Process $process)
             throw new InvalidArgumentException('Expected a failed process, but the given process was successful.');
         }
 
-        $error = sprintf('The command "%s" failed.'."\nExit Code: %s(%s)",
+        $error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s",
             $process->getCommandLine(),
             $process->getExitCode(),
-            $process->getExitCodeText()
+            $process->getExitCodeText(),
+            $process->getWorkingDirectory()
         );
 
         if (!$process->isOutputDisabled()) {
diff --git a/vendor/symfony/process/PhpExecutableFinder.php b/vendor/symfony/process/PhpExecutableFinder.php
index f8f57cc..fb29782 100644
--- a/vendor/symfony/process/PhpExecutableFinder.php
+++ b/vendor/symfony/process/PhpExecutableFinder.php
@@ -35,14 +35,17 @@ public function __construct()
      */
     public function find($includeArgs = true)
     {
+        $args = $this->findArguments();
+        $args = $includeArgs && $args ? ' '.implode(' ', $args) : '';
+
         // HHVM support
         if (defined('HHVM_VERSION')) {
-            return (getenv('PHP_BINARY') ?: PHP_BINARY).($includeArgs ? ' '.implode(' ', $this->findArguments()) : '');
+            return (getenv('PHP_BINARY') ?: PHP_BINARY).$args;
         }
 
         // PHP_BINARY return the current sapi executable
-        if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server')) && is_file(PHP_BINARY)) {
-            return PHP_BINARY;
+        if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server', 'phpdbg')) && is_file(PHP_BINARY)) {
+            return PHP_BINARY.$args;
         }
 
         if ($php = getenv('PHP_PATH')) {
@@ -76,9 +79,10 @@ public function findArguments()
     {
         $arguments = array();
 
-        // HHVM support
         if (defined('HHVM_VERSION')) {
             $arguments[] = '--php';
+        } elseif ('phpdbg' === PHP_SAPI) {
+            $arguments[] = '-qrr';
         }
 
         return $arguments;
diff --git a/vendor/symfony/process/PhpProcess.php b/vendor/symfony/process/PhpProcess.php
index 1adbd97..4a2a262 100644
--- a/vendor/symfony/process/PhpProcess.php
+++ b/vendor/symfony/process/PhpProcess.php
@@ -39,6 +39,13 @@ public function __construct($script, $cwd = null, array $env = null, $timeout =
         if (false === $php = $executableFinder->find()) {
             $php = null;
         }
+        if ('phpdbg' === PHP_SAPI) {
+            $file = tempnam(sys_get_temp_dir(), 'dbg');
+            file_put_contents($file, $script);
+            register_shutdown_function('unlink', $file);
+            $php .= ' '.ProcessUtils::escapeArgument($file);
+            $script = null;
+        }
 
         parent::__construct($php, $cwd, $env, $script, $timeout, $options);
     }
diff --git a/vendor/symfony/process/Process.php b/vendor/symfony/process/Process.php
index 699151f..c1e7321 100644
--- a/vendor/symfony/process/Process.php
+++ b/vendor/symfony/process/Process.php
@@ -280,8 +280,20 @@ public function start($callback = null)
             }
         }
 
+        $ptsWorkaround = null;
+
+        if (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) {
+            // Workaround for the bug, when PTS functionality is enabled.
+            // @see : https://bugs.php.net/69442
+            $ptsWorkaround = fopen(__FILE__, 'r');
+        }
+
         $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $this->env, $this->options);
 
+        if ($ptsWorkaround) {
+            fclose($ptsWorkaround);
+        }
+
         if (!is_resource($this->process)) {
             throw new RuntimeException('Unable to launch a new process.');
         }
@@ -763,22 +775,14 @@ public function getStatus()
      * Stops the process.
      *
      * @param int|float $timeout The timeout in seconds
-     * @param int       $signal  A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL
+     * @param int       $signal  A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9)
      *
      * @return int The exit-code of the process
-     *
-     * @throws RuntimeException if the process got signaled
      */
     public function stop($timeout = 10, $signal = null)
     {
         $timeoutMicro = microtime(true) + $timeout;
         if ($this->isRunning()) {
-            if ('\\' === DIRECTORY_SEPARATOR && !$this->isSigchildEnabled()) {
-                exec(sprintf('taskkill /F /T /PID %d 2>&1', $this->getPid()), $output, $exitCode);
-                if ($exitCode > 0) {
-                    throw new RuntimeException('Unable to kill the process');
-                }
-            }
             // given `SIGTERM` may not be defined and that `proc_terminate` uses the constant value and not the constant itself, we use the same here
             $this->doSignal(15, false);
             do {
@@ -786,13 +790,9 @@ public function stop($timeout = 10, $signal = null)
             } while ($this->isRunning() && microtime(true) < $timeoutMicro);
 
             if ($this->isRunning() && !$this->isSigchildEnabled()) {
-                if (null !== $signal || defined('SIGKILL')) {
-                    // avoid exception here :
-                    // process is supposed to be running, but it might have stop
-                    // just after this line.
-                    // in any case, let's silently discard the error, we can not do anything
-                    $this->doSignal($signal ?: SIGKILL, false);
-                }
+                // Avoid exception here: process is supposed to be running, but it might have stopped just
+                // after this line. In any case, let's silently discard the error, we cannot do anything.
+                $this->doSignal($signal ?: 9, false);
             }
         }
 
@@ -1461,7 +1461,18 @@ private function doSignal($signal, $throwException)
             return false;
         }
 
-        if (true !== @proc_terminate($this->process, $signal)) {
+        if ('\\' === DIRECTORY_SEPARATOR) {
+            exec(sprintf('taskkill /F /T /PID %d 2>&1', $this->getPid()), $output, $exitCode);
+            if ($exitCode) {
+                if ($throwException) {
+                    throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output)));
+                }
+
+                return false;
+            }
+        }
+
+        if (true !== @proc_terminate($this->process, $signal) && '\\' !== DIRECTORY_SEPARATOR) {
             if ($throwException) {
                 throw new RuntimeException(sprintf('Error while sending signal `%s`.', $signal));
             }
diff --git a/vendor/symfony/process/composer.json b/vendor/symfony/process/composer.json
index 8d21baf..b3cb518 100644
--- a/vendor/symfony/process/composer.json
+++ b/vendor/symfony/process/composer.json
@@ -19,12 +19,15 @@
         "php": ">=5.3.9"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Process\\": "" }
+        "psr-4": { "Symfony\\Component\\Process\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/process/phpunit.xml.dist b/vendor/symfony/process/phpunit.xml.dist
index b5d605c..7885000 100644
--- a/vendor/symfony/process/phpunit.xml.dist
+++ b/vendor/symfony/process/phpunit.xml.dist
@@ -21,6 +21,7 @@
             <directory>./</directory>
             <exclude>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/symfony/routing/CHANGELOG.md b/vendor/symfony/routing/CHANGELOG.md
index b5fd9db..7f5d9f0 100644
--- a/vendor/symfony/routing/CHANGELOG.md
+++ b/vendor/symfony/routing/CHANGELOG.md
@@ -1,6 +1,13 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * allowed specifying a directory to recursively load all routing configuration files it contains
+ * Added ObjectRouteLoader and ServiceRouteLoader that allow routes to be loaded
+   by calling a method on an object/service.
+
 2.5.0
 -----
 
diff --git a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
index b53caaf..943e838 100644
--- a/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
+++ b/vendor/symfony/routing/Generator/Dumper/PhpGeneratorDumper.php
@@ -53,7 +53,7 @@ public function dump(array $options = array())
  */
 class {$options['class']} extends {$options['base_class']}
 {
-    private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
+    private static \$declaredRoutes;
 
     /**
      * Constructor.
@@ -62,6 +62,9 @@ public function __construct(RequestContext \$context, LoggerInterface \$logger =
     {
         \$this->context = \$context;
         \$this->logger = \$logger;
+        if (null === self::\$declaredRoutes) {
+            self::\$declaredRoutes = {$this->generateDeclaredRoutes()};
+        }
     }
 
 {$this->generateGenerateMethod()}
diff --git a/vendor/symfony/routing/Generator/UrlGenerator.php b/vendor/symfony/routing/Generator/UrlGenerator.php
index 6798951..6e40a30 100644
--- a/vendor/symfony/routing/Generator/UrlGenerator.php
+++ b/vendor/symfony/routing/Generator/UrlGenerator.php
@@ -143,6 +143,20 @@ public function generate($name, $parameters = array(), $referenceType = self::AB
      */
     protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = array())
     {
+        if (is_bool($referenceType) || is_string($referenceType)) {
+            @trigger_error('The hardcoded value you are using for the $referenceType argument of the '.__CLASS__.'::generate method is deprecated since version 2.8 and will not be supported anymore in 3.0. Use the constants defined in the UrlGeneratorInterface instead.', E_USER_DEPRECATED);
+
+            if (true === $referenceType) {
+                $referenceType = self::ABSOLUTE_URL;
+            } elseif (false === $referenceType) {
+                $referenceType = self::ABSOLUTE_PATH;
+            } elseif ('relative' === $referenceType) {
+                $referenceType = self::RELATIVE_PATH;
+            } elseif ('network' === $referenceType) {
+                $referenceType = self::NETWORK_PATH;
+            }
+        }
+
         $variables = array_flip($variables);
         $mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters);
 
diff --git a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
index fc294b7..f501ebd 100644
--- a/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
+++ b/vendor/symfony/routing/Generator/UrlGeneratorInterface.php
@@ -34,25 +34,25 @@
     /**
      * Generates an absolute URL, e.g. "http://example.com/dir/file".
      */
-    const ABSOLUTE_URL = true;
+    const ABSOLUTE_URL = 0;
 
     /**
      * Generates an absolute path, e.g. "/dir/file".
      */
-    const ABSOLUTE_PATH = false;
+    const ABSOLUTE_PATH = 1;
 
     /**
      * Generates a relative path based on the current request path, e.g. "../parent-file".
      *
      * @see UrlGenerator::getRelativePath()
      */
-    const RELATIVE_PATH = 'relative';
+    const RELATIVE_PATH = 2;
 
     /**
      * Generates a network path, e.g. "//example.com/dir/file".
      * Such reference reuses the current scheme but specifies the host.
      */
-    const NETWORK_PATH = 'network';
+    const NETWORK_PATH = 3;
 
     /**
      * Generates a URL or path for a specific route based on the given parameters.
@@ -69,9 +69,9 @@
      *
      * If there is no route with the given name, the generator must throw the RouteNotFoundException.
      *
-     * @param string      $name          The name of the route
-     * @param mixed       $parameters    An array of parameters
-     * @param bool|string $referenceType The type of reference to be generated (one of the constants)
+     * @param string $name          The name of the route
+     * @param mixed  $parameters    An array of parameters
+     * @param int    $referenceType The type of reference to be generated (one of the constants)
      *
      * @return string The generated URL
      *
diff --git a/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
new file mode 100644
index 0000000..daa0a15
--- /dev/null
+++ b/vendor/symfony/routing/Loader/DependencyInjection/ServiceRouterLoader.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Routing\Loader\DependencyInjection;
+
+use Symfony\Component\Config\Loader\Loader;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\Routing\Loader\ObjectRouteLoader;
+
+/**
+ * A route loader that executes a service to load the routes.
+ *
+ * This depends on the DependencyInjection component.
+ *
+ * @author Ryan Weaver <ryan@knpuniversity.com>
+ */
+class ServiceRouterLoader extends ObjectRouteLoader
+{
+    /**
+     * @var ContainerInterface
+     */
+    private $container;
+
+    public function __construct(ContainerInterface $container)
+    {
+        $this->container = $container;
+    }
+
+    protected function getServiceObject($id)
+    {
+        return $this->container->get($id);
+    }
+}
diff --git a/vendor/symfony/routing/Loader/DirectoryLoader.php b/vendor/symfony/routing/Loader/DirectoryLoader.php
new file mode 100644
index 0000000..4bb5b31
--- /dev/null
+++ b/vendor/symfony/routing/Loader/DirectoryLoader.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Routing\Loader;
+
+use Symfony\Component\Config\Loader\FileLoader;
+use Symfony\Component\Routing\RouteCollection;
+use Symfony\Component\Config\Resource\DirectoryResource;
+
+class DirectoryLoader extends FileLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load($file, $type = null)
+    {
+        $path = $this->locator->locate($file);
+
+        $collection = new RouteCollection();
+        $collection->addResource(new DirectoryResource($path));
+
+        foreach (scandir($path) as $dir) {
+            if ('.' !== $dir[0]) {
+                $this->setCurrentDir($path);
+                $subPath = $path.'/'.$dir;
+                $subType = null;
+
+                if (is_dir($subPath)) {
+                    $subPath .= '/';
+                    $subType = 'directory';
+                }
+
+                $subCollection = $this->import($subPath, $subType, false, $path);
+                $collection->addCollection($subCollection);
+            }
+        }
+
+        return $collection;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function supports($resource, $type = null)
+    {
+        // only when type is forced to directory, not to conflict with AnnotationLoader
+
+        return 'directory' === $type;
+    }
+}
diff --git a/vendor/symfony/routing/Loader/ObjectRouteLoader.php b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
new file mode 100644
index 0000000..65d0ce3
--- /dev/null
+++ b/vendor/symfony/routing/Loader/ObjectRouteLoader.php
@@ -0,0 +1,93 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Routing\Loader;
+
+use Symfony\Component\Config\Loader\Loader;
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Routing\RouteCollection;
+
+/**
+ * A route loader that calls a method on an object to load the routes.
+ *
+ * @author Ryan Weaver <ryan@knpuniversity.com>
+ */
+abstract class ObjectRouteLoader extends Loader
+{
+    /**
+     * Returns the object that the method will be called on to load routes.
+     *
+     * For example, if your application uses a service container,
+     * the $id may be a service id.
+     *
+     * @param string $id
+     *
+     * @return object
+     */
+    abstract protected function getServiceObject($id);
+
+    /**
+     * Calls the service that will load the routes.
+     *
+     * @param mixed       $resource Some value that will resolve to a callable
+     * @param string|null $type     The resource type
+     *
+     * @return RouteCollection
+     */
+    public function load($resource, $type = null)
+    {
+        $parts = explode(':', $resource);
+        if (count($parts) != 2) {
+            throw new \InvalidArgumentException(sprintf('Invalid resource "%s" passed to the "service" route loader: use the format "service_name:methodName"', $resource));
+        }
+
+        $serviceString = $parts[0];
+        $method = $parts[1];
+
+        $loaderObject = $this->getServiceObject($serviceString);
+
+        if (!is_object($loaderObject)) {
+            throw new \LogicException(sprintf('%s:getServiceObject() must return an object: %s returned', get_class($this), gettype($loaderObject)));
+        }
+
+        if (!method_exists($loaderObject, $method)) {
+            throw new \BadMethodCallException(sprintf('Method "%s" not found on "%s" when importing routing resource "%s"', $method, get_class($loaderObject), $resource));
+        }
+
+        $routeCollection = call_user_func(array($loaderObject, $method), $this);
+
+        if (!$routeCollection instanceof RouteCollection) {
+            $type = is_object($routeCollection) ? get_class($routeCollection) : gettype($routeCollection);
+
+            throw new \LogicException(sprintf('The %s::%s method must return a RouteCollection: %s returned', get_class($loaderObject), $method, $type));
+        }
+
+        // make the service file tracked so that if it changes, the cache rebuilds
+        $this->addClassResource(new \ReflectionClass($loaderObject), $routeCollection);
+
+        return $routeCollection;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function supports($resource, $type = null)
+    {
+        return 'service' === $type;
+    }
+
+    private function addClassResource(\ReflectionClass $class, RouteCollection $collection)
+    {
+        do {
+            $collection->addResource(new FileResource($class->getFileName()));
+        } while ($class = $class->getParentClass());
+    }
+}
diff --git a/vendor/symfony/routing/RouteCollectionBuilder.php b/vendor/symfony/routing/RouteCollectionBuilder.php
new file mode 100644
index 0000000..a54a049
--- /dev/null
+++ b/vendor/symfony/routing/RouteCollectionBuilder.php
@@ -0,0 +1,372 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Routing;
+
+use Symfony\Component\Config\Exception\FileLoaderLoadException;
+use Symfony\Component\Config\Loader\LoaderInterface;
+use Symfony\Component\Config\Resource\ResourceInterface;
+
+/**
+ * Helps add and import routes into a RouteCollection.
+ *
+ * @author Ryan Weaver <ryan@knpuniversity.com>
+ */
+class RouteCollectionBuilder
+{
+    /**
+     * @var Route[]|RouteCollectionBuilder[]
+     */
+    private $routes = array();
+
+    private $loader;
+    private $defaults = array();
+    private $prefix;
+    private $host;
+    private $condition;
+    private $requirements = array();
+    private $options = array();
+    private $schemes;
+    private $methods;
+    private $resources = array();
+
+    /**
+     * @param LoaderInterface $loader
+     */
+    public function __construct(LoaderInterface $loader = null)
+    {
+        $this->loader = $loader;
+    }
+
+    /**
+     * Import an external routing resource and returns the RouteCollectionBuilder.
+     *
+     *  $routes->import('blog.yml', '/blog');
+     *
+     * @param mixed       $resource
+     * @param string|null $prefix
+     * @param string      $type
+     *
+     * @return RouteCollectionBuilder
+     *
+     * @throws FileLoaderLoadException
+     */
+    public function import($resource, $prefix = '/', $type = null)
+    {
+        /** @var RouteCollection $collection */
+        $collection = $this->load($resource, $type);
+
+        // create a builder from the RouteCollection
+        $builder = $this->createBuilder();
+        foreach ($collection->all() as $name => $route) {
+            $builder->addRoute($route, $name);
+        }
+
+        foreach ($collection->getResources() as $resource) {
+            $builder->addResource($resource);
+        }
+
+        // mount into this builder
+        $this->mount($prefix, $builder);
+
+        return $builder;
+    }
+
+    /**
+     * Adds a route and returns it for future modification.
+     *
+     * @param string      $path       The route path
+     * @param string      $controller The route's controller
+     * @param string|null $name       The name to give this route
+     *
+     * @return Route
+     */
+    public function add($path, $controller, $name = null)
+    {
+        $route = new Route($path);
+        $route->setDefault('_controller', $controller);
+        $this->addRoute($route, $name);
+
+        return $route;
+    }
+
+    /**
+     * Returns a RouteCollectionBuilder that can be configured and then added with mount().
+     *
+     * @return RouteCollectionBuilder
+     */
+    public function createBuilder()
+    {
+        return new self($this->loader);
+    }
+
+    /**
+     * Add a RouteCollectionBuilder.
+     *
+     * @param RouteCollectionBuilder $builder
+     */
+    public function mount($prefix, RouteCollectionBuilder $builder)
+    {
+        $builder->prefix = trim(trim($prefix), '/');
+        $this->routes[] = $builder;
+    }
+
+    /**
+     * Adds a Route object to the builder.
+     *
+     * @param Route       $route
+     * @param string|null $name
+     *
+     * @return $this
+     */
+    public function addRoute(Route $route, $name = null)
+    {
+        if (null === $name) {
+            // used as a flag to know which routes will need a name later
+            $name = '_unnamed_route_'.spl_object_hash($route);
+        }
+
+        $this->routes[$name] = $route;
+
+        return $this;
+    }
+
+    /**
+     * Sets the host on all embedded routes (unless already set).
+     *
+     * @param string $pattern
+     *
+     * @return $this
+     */
+    public function setHost($pattern)
+    {
+        $this->host = $pattern;
+
+        return $this;
+    }
+
+    /**
+     * Sets a condition on all embedded routes (unless already set).
+     *
+     * @param string $condition
+     *
+     * @return $this
+     */
+    public function setCondition($condition)
+    {
+        $this->condition = $condition;
+
+        return $this;
+    }
+
+    /**
+     * Sets a default value that will be added to all embedded routes (unless that
+     * default value is already set.
+     *
+     * @param string $key
+     * @param mixed  $value
+     *
+     * @return $this
+     */
+    public function setDefault($key, $value)
+    {
+        $this->defaults[$key] = $value;
+
+        return $this;
+    }
+
+    /**
+     * Sets a requirement that will be added to all embedded routes (unless that
+     * requirement is already set.
+     *
+     * @param string $key
+     * @param mixed  $regex
+     *
+     * @return $this
+     */
+    public function setRequirement($key, $regex)
+    {
+        $this->requirements[$key] = $regex;
+
+        return $this;
+    }
+
+    /**
+     * Sets an opiton that will be added to all embedded routes (unless that
+     * option is already set.
+     *
+     * @param string $key
+     * @param mixed  $value
+     *
+     * @return $this
+     */
+    public function setOption($key, $value)
+    {
+        $this->options[$key] = $value;
+
+        return $this;
+    }
+
+    /**
+     * Sets the schemes on all embedded routes (unless already set).
+     *
+     * @param array|string $schemes
+     *
+     * @return $this
+     */
+    public function setSchemes($schemes)
+    {
+        $this->schemes = $schemes;
+
+        return $this;
+    }
+
+    /**
+     * Sets the methods on all embedded routes (unless already set).
+     *
+     * @param array|string $methods
+     *
+     * @return $this
+     */
+    public function setMethods($methods)
+    {
+        $this->methods = $methods;
+
+        return $this;
+    }
+
+    /**
+     * Adds a resource for this collection.
+     *
+     * @param ResourceInterface $resource
+     *
+     * @return $this
+     */
+    private function addResource(ResourceInterface $resource)
+    {
+        $this->resources[] = $resource;
+
+        return $this;
+    }
+
+    /**
+     * Creates the final RouteCollection and returns it.
+     *
+     * @return RouteCollection
+     */
+    public function build()
+    {
+        $routeCollection = new RouteCollection();
+
+        foreach ($this->routes as $name => $route) {
+            if ($route instanceof Route) {
+                $route->setDefaults(array_merge($this->defaults, $route->getDefaults()));
+                $route->setOptions(array_merge($this->options, $route->getOptions()));
+
+                // we're extra careful here to avoid re-setting deprecated _method and _scheme
+                foreach ($this->requirements as $key => $val) {
+                    if (!$route->hasRequirement($key)) {
+                        $route->setRequirement($key, $val);
+                    }
+                }
+
+                if (null !== $this->prefix) {
+                    $route->setPath('/'.$this->prefix.$route->getPath());
+                }
+
+                if (!$route->getHost()) {
+                    $route->setHost($this->host);
+                }
+
+                if (!$route->getCondition()) {
+                    $route->setCondition($this->condition);
+                }
+
+                if (!$route->getSchemes()) {
+                    $route->setSchemes($this->schemes);
+                }
+
+                if (!$route->getMethods()) {
+                    $route->setMethods($this->methods);
+                }
+
+                // auto-generate the route name if it's been marked
+                if ('_unnamed_route_' === substr($name, 0, 15)) {
+                    $name = $this->generateRouteName($route);
+                }
+
+                $routeCollection->add($name, $route);
+            } else {
+                /* @var self $route */
+                $subCollection = $route->build();
+                $subCollection->addPrefix($this->prefix);
+
+                $routeCollection->addCollection($subCollection);
+            }
+
+            foreach ($this->resources as $resource) {
+                $routeCollection->addResource($resource);
+            }
+        }
+
+        return $routeCollection;
+    }
+
+    /**
+     * Generates a route name based on details of this route.
+     *
+     * @return string
+     */
+    private function generateRouteName(Route $route)
+    {
+        $methods = implode('_', $route->getMethods()).'_';
+
+        $routeName = $methods.$route->getPath();
+        $routeName = str_replace(array('/', ':', '|', '-'), '_', $routeName);
+        $routeName = preg_replace('/[^a-z0-9A-Z_.]+/', '', $routeName);
+
+        // Collapse consecutive underscores down into a single underscore.
+        $routeName = preg_replace('/_+/', '_', $routeName);
+
+        return $routeName;
+    }
+
+    /**
+     * Finds a loader able to load an imported resource and loads it.
+     *
+     * @param mixed       $resource A resource
+     * @param string|null $type     The resource type or null if unknown
+     *
+     * @return RouteCollection
+     *
+     * @throws FileLoaderLoadException If no loader is found
+     */
+    private function load($resource, $type = null)
+    {
+        if (null === $this->loader) {
+            throw new \BadMethodCallException('Cannot import other routing resources: you must pass a LoaderInterface when constructing RouteCollectionBuilder.');
+        }
+
+        if ($this->loader->supports($resource, $type)) {
+            return $this->loader->load($resource, $type);
+        }
+
+        if (null === $resolver = $this->loader->getResolver()) {
+            throw new FileLoaderLoadException($resource);
+        }
+
+        if (false === $loader = $resolver->resolve($resource, $type)) {
+            throw new FileLoaderLoadException($resource);
+        }
+
+        return $loader->load($resource, $type);
+    }
+}
diff --git a/vendor/symfony/routing/composer.json b/vendor/symfony/routing/composer.json
index 02837f6..9028e79 100644
--- a/vendor/symfony/routing/composer.json
+++ b/vendor/symfony/routing/composer.json
@@ -19,10 +19,10 @@
         "php": ">=5.3.9"
     },
     "require-dev": {
-        "symfony/config": "~2.7",
-        "symfony/http-foundation": "~2.3",
-        "symfony/yaml": "~2.0,>=2.0.5",
-        "symfony/expression-language": "~2.4",
+        "symfony/config": "~2.7|~3.0.0",
+        "symfony/http-foundation": "~2.3|~3.0.0",
+        "symfony/yaml": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/expression-language": "~2.4|~3.0.0",
         "doctrine/annotations": "~1.0",
         "doctrine/common": "~2.2",
         "psr/log": "~1.0"
@@ -34,15 +34,19 @@
         "symfony/config": "For using the all-in-one router or any loader",
         "symfony/yaml": "For using the YAML loader",
         "symfony/expression-language": "For using expression matching",
-        "doctrine/annotations": "For using the annotation loader"
+        "doctrine/annotations": "For using the annotation loader",
+        "symfony/dependency-injection": "For loading routes from a service"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Routing\\": "" }
+        "psr-4": { "Symfony\\Component\\Routing\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/routing/phpunit.xml.dist b/vendor/symfony/routing/phpunit.xml.dist
index a908308..b69f066 100644
--- a/vendor/symfony/routing/phpunit.xml.dist
+++ b/vendor/symfony/routing/phpunit.xml.dist
@@ -20,8 +20,8 @@
         <whitelist>
             <directory>./</directory>
             <exclude>
-                <directory>./vendor</directory>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/symfony/serializer/Encoder/JsonDecode.php b/vendor/symfony/serializer/Encoder/JsonDecode.php
index 5f5f289..8925ec3 100644
--- a/vendor/symfony/serializer/Encoder/JsonDecode.php
+++ b/vendor/symfony/serializer/Encoder/JsonDecode.php
@@ -108,7 +108,7 @@ public function decode($data, $format, array $context = array())
         }
 
         if (JSON_ERROR_NONE !== $this->lastError = json_last_error()) {
-            throw new UnexpectedValueException(JsonEncoder::getLastErrorMessage());
+            throw new UnexpectedValueException(json_last_error_msg());
         }
 
         return $decodedData;
diff --git a/vendor/symfony/serializer/Encoder/JsonEncode.php b/vendor/symfony/serializer/Encoder/JsonEncode.php
index 3a6b2fd..454c0d6 100644
--- a/vendor/symfony/serializer/Encoder/JsonEncode.php
+++ b/vendor/symfony/serializer/Encoder/JsonEncode.php
@@ -56,7 +56,7 @@ public function encode($data, $format, array $context = array())
         $encodedJson = json_encode($data, $context['json_encode_options']);
 
         if (JSON_ERROR_NONE !== $this->lastError = json_last_error()) {
-            throw new UnexpectedValueException(JsonEncoder::getLastErrorMessage());
+            throw new UnexpectedValueException(json_last_error_msg());
         }
 
         return $encodedJson;
diff --git a/vendor/symfony/serializer/Encoder/JsonEncoder.php b/vendor/symfony/serializer/Encoder/JsonEncoder.php
index 284f579..159d435 100644
--- a/vendor/symfony/serializer/Encoder/JsonEncoder.php
+++ b/vendor/symfony/serializer/Encoder/JsonEncoder.php
@@ -100,26 +100,13 @@ public function supportsDecoding($format)
      * Resolves json_last_error message.
      *
      * @return string
+     *
+     * @deprecated since 2.8, to be removed in 3.0. Use json_last_error_msg() instead.
      */
     public static function getLastErrorMessage()
     {
-        if (function_exists('json_last_error_msg')) {
-            return json_last_error_msg();
-        }
-
-        switch (json_last_error()) {
-            case JSON_ERROR_DEPTH:
-                return 'Maximum stack depth exceeded';
-            case JSON_ERROR_STATE_MISMATCH:
-                return 'Underflow or the modes mismatch';
-            case JSON_ERROR_CTRL_CHAR:
-                return 'Unexpected control character found';
-            case JSON_ERROR_SYNTAX:
-                return 'Syntax error, malformed JSON';
-            case JSON_ERROR_UTF8:
-                return 'Malformed UTF-8 characters, possibly incorrectly encoded';
-            default:
-                return 'Unknown error';
-        }
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use json_last_error_msg() instead.', E_USER_DEPRECATED);
+
+        return json_last_error_msg();
     }
 }
diff --git a/vendor/symfony/serializer/Exception/BadMethodCallException.php b/vendor/symfony/serializer/Exception/BadMethodCallException.php
new file mode 100644
index 0000000..b2f3d61
--- /dev/null
+++ b/vendor/symfony/serializer/Exception/BadMethodCallException.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Serializer\Exception;
+
+class BadMethodCallException extends \BadMethodCallException implements ExceptionInterface
+{
+}
diff --git a/vendor/symfony/serializer/Normalizer/ArrayDenormalizer.php b/vendor/symfony/serializer/Normalizer/ArrayDenormalizer.php
new file mode 100644
index 0000000..921e312
--- /dev/null
+++ b/vendor/symfony/serializer/Normalizer/ArrayDenormalizer.php
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Serializer\Normalizer;
+
+use Symfony\Component\Serializer\Exception\BadMethodCallException;
+use Symfony\Component\Serializer\Exception\InvalidArgumentException;
+use Symfony\Component\Serializer\SerializerAwareInterface;
+use Symfony\Component\Serializer\SerializerInterface;
+
+/**
+ * Denormalizes arrays of objects.
+ *
+ * @author Alexander M. Turek <me@derrabus.de>
+ */
+class ArrayDenormalizer implements DenormalizerInterface, SerializerAwareInterface
+{
+    /**
+     * @var SerializerInterface|DenormalizerInterface
+     */
+    private $serializer;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function denormalize($data, $class, $format = null, array $context = array())
+    {
+        if ($this->serializer === null) {
+            throw new BadMethodCallException('Please set a serializer before calling denormalize()!');
+        }
+        if (!is_array($data)) {
+            throw new InvalidArgumentException('Data expected to be an array, '.gettype($data).' given.');
+        }
+        if (substr($class, -2) !== '[]') {
+            throw new InvalidArgumentException('Unsupported class: '.$class);
+        }
+
+        $serializer = $this->serializer;
+        $class = substr($class, 0, -2);
+
+        return array_map(
+            function ($data) use ($serializer, $class, $format, $context) {
+                return $serializer->denormalize($data, $class, $format, $context);
+            },
+            $data
+        );
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function supportsDenormalization($data, $type, $format = null)
+    {
+        return substr($type, -2) === '[]'
+            && $this->serializer->supportsDenormalization($data, substr($type, 0, -2), $format);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setSerializer(SerializerInterface $serializer)
+    {
+        if (!$serializer instanceof DenormalizerInterface) {
+            throw new InvalidArgumentException('Expected a serializer that also implements DenormalizerInterface.');
+        }
+
+        $this->serializer = $serializer;
+    }
+}
diff --git a/vendor/symfony/serializer/Normalizer/CustomNormalizer.php b/vendor/symfony/serializer/Normalizer/CustomNormalizer.php
index 83c3c14..7df266a 100644
--- a/vendor/symfony/serializer/Normalizer/CustomNormalizer.php
+++ b/vendor/symfony/serializer/Normalizer/CustomNormalizer.php
@@ -59,6 +59,10 @@ public function supportsNormalization($data, $format = null)
      */
     public function supportsDenormalization($data, $type, $format = null)
     {
+        if (!class_exists($type)) {
+            return false;
+        }
+
         $class = new \ReflectionClass($type);
 
         return $class->isSubclassOf('Symfony\Component\Serializer\Normalizer\DenormalizableInterface');
diff --git a/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php b/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php
index 44a71cf..fc7ac9f 100644
--- a/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php
+++ b/vendor/symfony/serializer/Normalizer/GetSetMethodNormalizer.php
@@ -114,7 +114,7 @@ public function denormalize($data, $class, $format = null, array $context = arra
             if ($allowed && !$ignored) {
                 $setter = 'set'.ucfirst($attribute);
 
-                if (in_array($setter, $classMethods)) {
+                if (in_array($setter, $classMethods) && !$reflectionClass->getMethod($setter)->isStatic()) {
                     $object->$setter($value);
                 }
             }
@@ -136,7 +136,7 @@ public function supportsNormalization($data, $format = null)
      */
     public function supportsDenormalization($data, $type, $format = null)
     {
-        return $this->supports($type);
+        return class_exists($type) && $this->supports($type);
     }
 
     /**
@@ -170,10 +170,13 @@ private function isGetMethod(\ReflectionMethod $method)
     {
         $methodLength = strlen($method->name);
 
-        return (
-            ((0 === strpos($method->name, 'get') && 3 < $methodLength) ||
-            (0 === strpos($method->name, 'is') && 2 < $methodLength)) &&
-            0 === $method->getNumberOfRequiredParameters()
-        );
+        return
+            !$method->isStatic() &&
+            (
+                ((0 === strpos($method->name, 'get') && 3 < $methodLength) ||
+                (0 === strpos($method->name, 'is') && 2 < $methodLength)) &&
+                0 === $method->getNumberOfRequiredParameters()
+            )
+        ;
     }
 }
diff --git a/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php b/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php
index ba84ac7..c731dd7 100644
--- a/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php
+++ b/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php
@@ -26,6 +26,8 @@
  */
 class ObjectNormalizer extends AbstractNormalizer
 {
+    private static $attributesCache = array();
+
     /**
      * @var PropertyAccessorInterface
      */
@@ -58,39 +60,7 @@ public function normalize($object, $format = null, array $context = array())
         }
 
         $data = array();
-        $attributes = $this->getAllowedAttributes($object, $context, true);
-
-        // If not using groups, detect manually
-        if (false === $attributes) {
-            $attributes = array();
-
-            // methods
-            $reflClass = new \ReflectionClass($object);
-            foreach ($reflClass->getMethods(\ReflectionMethod::IS_PUBLIC) as $reflMethod) {
-                if (
-                    !$reflMethod->isConstructor() &&
-                    !$reflMethod->isDestructor() &&
-                    0 === $reflMethod->getNumberOfRequiredParameters()
-                ) {
-                    $name = $reflMethod->getName();
-
-                    if (strpos($name, 'get') === 0 || strpos($name, 'has') === 0) {
-                        // getters and hassers
-                        $attributes[lcfirst(substr($name, 3))] = true;
-                    } elseif (strpos($name, 'is') === 0) {
-                        // issers
-                        $attributes[lcfirst(substr($name, 2))] = true;
-                    }
-                }
-            }
-
-            // properties
-            foreach ($reflClass->getProperties(\ReflectionProperty::IS_PUBLIC) as $reflProperty) {
-                $attributes[$reflProperty->getName()] = true;
-            }
-
-            $attributes = array_keys($attributes);
-        }
+        $attributes = $this->getAttributes($object, $context);
 
         foreach ($attributes as $attribute) {
             if (in_array($attribute, $this->ignoredAttributes)) {
@@ -159,4 +129,64 @@ public function denormalize($data, $class, $format = null, array $context = arra
 
         return $object;
     }
+
+    /**
+     * Gets and caches attributes for this class and context.
+     *
+     * @param object $object
+     * @param array  $context
+     *
+     * @return array
+     */
+    private function getAttributes($object, array $context)
+    {
+        $key = sprintf('%s-%s', get_class($object), serialize($context));
+
+        if (isset(self::$attributesCache[$key])) {
+            return self::$attributesCache[$key];
+        }
+
+        $allowedAttributes = $this->getAllowedAttributes($object, $context, true);
+
+        if (false !== $allowedAttributes) {
+            return self::$attributesCache[$key] = $allowedAttributes;
+        }
+
+        // If not using groups, detect manually
+        $attributes = array();
+
+        // methods
+        $reflClass = new \ReflectionClass($object);
+        foreach ($reflClass->getMethods(\ReflectionMethod::IS_PUBLIC) as $reflMethod) {
+            if (
+                $reflMethod->getNumberOfRequiredParameters() !== 0 ||
+                $reflMethod->isStatic() ||
+                $reflMethod->isConstructor() ||
+                $reflMethod->isDestructor()
+            ) {
+                continue;
+            }
+
+            $name = $reflMethod->getName();
+
+            if (strpos($name, 'get') === 0 || strpos($name, 'has') === 0) {
+                // getters and hassers
+                $attributes[lcfirst(substr($name, 3))] = true;
+            } elseif (strpos($name, 'is') === 0) {
+                // issers
+                $attributes[lcfirst(substr($name, 2))] = true;
+            }
+        }
+
+        // properties
+        foreach ($reflClass->getProperties(\ReflectionProperty::IS_PUBLIC) as $reflProperty) {
+            if ($reflProperty->isStatic()) {
+                continue;
+            }
+
+            $attributes[$reflProperty->getName()] = true;
+        }
+
+        return self::$attributesCache[$key] = array_keys($attributes);
+    }
 }
diff --git a/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php b/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php
index c8e83d1..993046f 100644
--- a/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php
+++ b/vendor/symfony/serializer/Normalizer/PropertyNormalizer.php
@@ -50,7 +50,7 @@ public function normalize($object, $format = null, array $context = array())
         $allowedAttributes = $this->getAllowedAttributes($object, $context, true);
 
         foreach ($reflectionObject->getProperties() as $property) {
-            if (in_array($property->name, $this->ignoredAttributes)) {
+            if (in_array($property->name, $this->ignoredAttributes) || $property->isStatic()) {
                 continue;
             }
 
@@ -110,6 +110,10 @@ public function denormalize($data, $class, $format = null, array $context = arra
             if ($allowed && !$ignored && $reflectionClass->hasProperty($propertyName)) {
                 $property = $reflectionClass->getProperty($propertyName);
 
+                if ($property->isStatic()) {
+                    continue;
+                }
+
                 // Override visibility
                 if (!$property->isPublic()) {
                     $property->setAccessible(true);
@@ -135,7 +139,7 @@ public function supportsNormalization($data, $format = null)
      */
     public function supportsDenormalization($data, $type, $format = null)
     {
-        return $this->supports($type);
+        return class_exists($type) && $this->supports($type);
     }
 
     /**
diff --git a/vendor/symfony/serializer/composer.json b/vendor/symfony/serializer/composer.json
index 0db008b..88b7832 100644
--- a/vendor/symfony/serializer/composer.json
+++ b/vendor/symfony/serializer/composer.json
@@ -16,12 +16,13 @@
         }
     ],
     "require": {
-        "php": ">=5.3.9"
+        "php": ">=5.3.9",
+        "symfony/polyfill-php55": "~1.0"
     },
     "require-dev": {
-        "symfony/yaml": "~2.0,>=2.0.5",
-        "symfony/config": "~2.2",
-        "symfony/property-access": "~2.3",
+        "symfony/yaml": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/config": "~2.2|~3.0.0",
+        "symfony/property-access": "~2.3|~3.0.0",
         "doctrine/annotations": "~1.0",
         "doctrine/cache": "~1.0"
     },
@@ -33,12 +34,15 @@
         "symfony/property-access": "For using the ObjectNormalizer."
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Serializer\\": "" }
+        "psr-4": { "Symfony\\Component\\Serializer\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/serializer/phpunit.xml.dist b/vendor/symfony/serializer/phpunit.xml.dist
index 279e1eb..4799e3c 100644
--- a/vendor/symfony/serializer/phpunit.xml.dist
+++ b/vendor/symfony/serializer/phpunit.xml.dist
@@ -20,8 +20,8 @@
         <whitelist>
             <directory>./</directory>
             <exclude>
-                <directory>./vendor</directory>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/symfony/translation/CHANGELOG.md b/vendor/symfony/translation/CHANGELOG.md
index 157752c..45f15a0 100644
--- a/vendor/symfony/translation/CHANGELOG.md
+++ b/vendor/symfony/translation/CHANGELOG.md
@@ -1,6 +1,22 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * deprecated FileDumper::format(), overwrite FileDumper::formatCatalogue() instead.
+ * deprecated Translator::getMessages(), rely on TranslatorBagInterface::getCatalogue() instead.
+ * added `FileDumper::formatCatalogue` which allows format the catalogue without dumping it into file.
+ * added option `json_encoding` to JsonFileDumper
+ * added options `as_tree`, `inline` to YamlFileDumper
+ * added support for XLIFF 2.0.
+ * added support for XLIFF target and tool attributes.
+ * added message parameters to DataCollectorTranslator.
+ * [DEPRECATION] The `DiffOperation` class has been deprecated and
+   will be removed in Symfony 3.0, since its operation has nothing to do with 'diff',
+   so the class name is misleading. The `TargetOperation` class should be used for
+   this use-case instead.
+
 2.7.0
 -----
 
diff --git a/vendor/symfony/translation/Catalogue/AbstractOperation.php b/vendor/symfony/translation/Catalogue/AbstractOperation.php
index 062056b..9598e17 100644
--- a/vendor/symfony/translation/Catalogue/AbstractOperation.php
+++ b/vendor/symfony/translation/Catalogue/AbstractOperation.php
@@ -17,38 +17,60 @@
 /**
  * Base catalogues binary operation class.
  *
+ * A catalogue binary operation performs operation on
+ * source (the left argument) and target (the right argument) catalogues.
+ *
  * @author Jean-François Simon <contact@jfsimon.fr>
  */
 abstract class AbstractOperation implements OperationInterface
 {
     /**
-     * @var MessageCatalogueInterface
+     * @var MessageCatalogueInterface The source catalogue
      */
     protected $source;
 
     /**
-     * @var MessageCatalogueInterface
+     * @var MessageCatalogueInterface The target catalogue
      */
     protected $target;
 
     /**
-     * @var MessageCatalogue
+     * @var MessageCatalogue The result catalogue
      */
     protected $result;
 
     /**
-     * @var null|array
+     * @var null|array The domains affected by this operation
      */
     private $domains;
 
     /**
-     * @var array
+     * This array stores 'all', 'new' and 'obsolete' messages for all valid domains.
+     *
+     * The data structure of this array is as follows:
+     * ```php
+     * array(
+     *     'domain 1' => array(
+     *         'all' => array(...),
+     *         'new' => array(...),
+     *         'obsolete' => array(...)
+     *     ),
+     *     'domain 2' => array(
+     *         'all' => array(...),
+     *         'new' => array(...),
+     *         'obsolete' => array(...)
+     *     ),
+     *     ...
+     * )
+     * ```
+     *
+     * @var array The array that stores 'all', 'new' and 'obsolete' messages
      */
     protected $messages;
 
     /**
-     * @param MessageCatalogueInterface $source
-     * @param MessageCatalogueInterface $target
+     * @param MessageCatalogueInterface $source The source catalogue
+     * @param MessageCatalogueInterface $target The target catalogue
      *
      * @throws \LogicException
      */
@@ -140,7 +162,10 @@ public function getResult()
     }
 
     /**
-     * @param string $domain
+     * Performs operation on source and target catalogues for the given domain and
+     * stores the results.
+     *
+     * @param string $domain The domain which the operation will be performed for
      */
     abstract protected function processDomain($domain);
 }
diff --git a/vendor/symfony/translation/Catalogue/DiffOperation.php b/vendor/symfony/translation/Catalogue/DiffOperation.php
index 2d1994e..cb9a6f5 100644
--- a/vendor/symfony/translation/Catalogue/DiffOperation.php
+++ b/vendor/symfony/translation/Catalogue/DiffOperation.php
@@ -11,45 +11,23 @@
 
 namespace Symfony\Component\Translation\Catalogue;
 
+@trigger_error('The '.__NAMESPACE__.'\DiffOperation class is deprecated since version 2.8 and will be removed in 3.0. Use the TargetOperation class in the same namespace instead.', E_USER_DEPRECATED);
+
 /**
  * Diff operation between two catalogues.
  *
+ * The name of 'Diff' is misleading because the operation
+ * has nothing to do with diff:
+ *
+ * intersection = source ∩ target = {x: x ∈ source ∧ x ∈ target}
+ * all = intersection ∪ (target ∖ intersection) = target
+ * new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
+ * obsolete = source ∖ all = source ∖ target = {x: x ∈ source ∧ x ∉ target}
+ *
  * @author Jean-François Simon <contact@jfsimon.fr>
+ *
+ * @deprecated since version 2.8, to be removed in 3.0. Use TargetOperation instead.
  */
-class DiffOperation extends AbstractOperation
+class DiffOperation extends TargetOperation
 {
-    /**
-     * {@inheritdoc}
-     */
-    protected function processDomain($domain)
-    {
-        $this->messages[$domain] = array(
-            'all' => array(),
-            'new' => array(),
-            'obsolete' => array(),
-        );
-
-        foreach ($this->source->all($domain) as $id => $message) {
-            if ($this->target->has($id, $domain)) {
-                $this->messages[$domain]['all'][$id] = $message;
-                $this->result->add(array($id => $message), $domain);
-                if (null !== $keyMetadata = $this->source->getMetadata($id, $domain)) {
-                    $this->result->setMetadata($id, $keyMetadata, $domain);
-                }
-            } else {
-                $this->messages[$domain]['obsolete'][$id] = $message;
-            }
-        }
-
-        foreach ($this->target->all($domain) as $id => $message) {
-            if (!$this->source->has($id, $domain)) {
-                $this->messages[$domain]['all'][$id] = $message;
-                $this->messages[$domain]['new'][$id] = $message;
-                $this->result->add(array($id => $message), $domain);
-                if (null !== $keyMetadata = $this->target->getMetadata($id, $domain)) {
-                    $this->result->setMetadata($id, $keyMetadata, $domain);
-                }
-            }
-        }
-    }
 }
diff --git a/vendor/symfony/translation/Catalogue/MergeOperation.php b/vendor/symfony/translation/Catalogue/MergeOperation.php
index 562ca0e..6db3f80 100644
--- a/vendor/symfony/translation/Catalogue/MergeOperation.php
+++ b/vendor/symfony/translation/Catalogue/MergeOperation.php
@@ -12,7 +12,11 @@
 namespace Symfony\Component\Translation\Catalogue;
 
 /**
- * Merge operation between two catalogues.
+ * Merge operation between two catalogues as follows:
+ * all = source ∪ target = {x: x ∈ source ∨ x ∈ target}
+ * new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
+ * obsolete = source ∖ all = {x: x ∈ source ∧ x ∉ source ∧ x ∉ target} = ∅
+ * Basically, the result contains messages from both catalogues.
  *
  * @author Jean-François Simon <contact@jfsimon.fr>
  */
diff --git a/vendor/symfony/translation/Catalogue/OperationInterface.php b/vendor/symfony/translation/Catalogue/OperationInterface.php
index d72378a..87d888e 100644
--- a/vendor/symfony/translation/Catalogue/OperationInterface.php
+++ b/vendor/symfony/translation/Catalogue/OperationInterface.php
@@ -16,6 +16,20 @@
 /**
  * Represents an operation on catalogue(s).
  *
+ * An instance of this interface performs an operation on one or more catalogues and
+ * stores intermediate and final results of the operation.
+ *
+ * The first catalogue in its argument(s) is called the 'source catalogue' or 'source' and
+ * the following results are stored:
+ *
+ * Messages: also called 'all', are valid messages for the given domain after the operation is performed.
+ *
+ * New Messages: also called 'new' (new = all ∖ source = {x: x ∈ all ∧ x ∉ source}).
+ *
+ * Obsolete Messages: also called 'obsolete' (obsolete = source ∖ all = {x: x ∈ source ∧ x ∉ all}).
+ *
+ * Result: also called 'result', is the resulting catalogue for the given domain that holds the same messages as 'all'.
+ *
  * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
  */
 interface OperationInterface
@@ -28,7 +42,7 @@
     public function getDomains();
 
     /**
-     * Returns all valid messages after operation.
+     * Returns all valid messages ('all') after operation.
      *
      * @param string $domain
      *
@@ -37,7 +51,7 @@ public function getDomains();
     public function getMessages($domain);
 
     /**
-     * Returns new messages after operation.
+     * Returns new messages ('new') after operation.
      *
      * @param string $domain
      *
@@ -46,7 +60,7 @@ public function getMessages($domain);
     public function getNewMessages($domain);
 
     /**
-     * Returns obsolete messages after operation.
+     * Returns obsolete messages ('obsolete') after operation.
      *
      * @param string $domain
      *
@@ -55,7 +69,7 @@ public function getNewMessages($domain);
     public function getObsoleteMessages($domain);
 
     /**
-     * Returns resulting catalogue.
+     * Returns resulting catalogue ('result').
      *
      * @return MessageCatalogueInterface
      */
diff --git a/vendor/symfony/translation/Catalogue/TargetOperation.php b/vendor/symfony/translation/Catalogue/TargetOperation.php
new file mode 100644
index 0000000..eea1fef
--- /dev/null
+++ b/vendor/symfony/translation/Catalogue/TargetOperation.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Catalogue;
+
+/**
+ * Target operation between two catalogues:
+ * intersection = source ∩ target = {x: x ∈ source ∧ x ∈ target}
+ * all = intersection ∪ (target ∖ intersection) = target
+ * new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
+ * obsolete = source ∖ all = source ∖ target = {x: x ∈ source ∧ x ∉ target}
+ * Basically, the result contains messages from the target catalogue. 
+ *
+ * @author Michael Lee <michael.lee@zerustech.com>
+ */
+class TargetOperation extends AbstractOperation
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected function processDomain($domain)
+    {
+        $this->messages[$domain] = array(
+            'all' => array(),
+            'new' => array(),
+            'obsolete' => array(),
+        );
+
+        // For 'all' messages, the code can't be simplified as ``$this->messages[$domain]['all'] = $target->all($domain);``, 
+        // because doing so will drop messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
+        //
+        // For 'new' messages, the code can't be simplied as ``array_diff_assoc($this->target->all($domain), $this->source->all($domain));``
+        // because doing so will not exclude messages like {x: x ∈ target ∧ x ∉ source.all ∧ x ∈ source.fallback}
+        // 
+        // For 'obsolete' messages, the code can't be simplifed as ``array_diff_assoc($this->source->all($domain), $this->target->all($domain))``
+        // because doing so will not exclude messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
+        
+        foreach ($this->source->all($domain) as $id => $message) {
+            if ($this->target->has($id, $domain)) {
+                $this->messages[$domain]['all'][$id] = $message;
+                $this->result->add(array($id => $message), $domain);
+                if (null !== $keyMetadata = $this->source->getMetadata($id, $domain)) {
+                    $this->result->setMetadata($id, $keyMetadata, $domain);
+                }
+            } else {
+                $this->messages[$domain]['obsolete'][$id] = $message;
+            }
+        }
+
+        foreach ($this->target->all($domain) as $id => $message) {
+            if (!$this->source->has($id, $domain)) {
+                $this->messages[$domain]['all'][$id] = $message;
+                $this->messages[$domain]['new'][$id] = $message;
+                $this->result->add(array($id => $message), $domain);
+                if (null !== $keyMetadata = $this->target->getMetadata($id, $domain)) {
+                    $this->result->setMetadata($id, $keyMetadata, $domain);
+                }
+            }
+        }
+    }
+}
diff --git a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php b/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
index c3c140f..cb59d0a 100644
--- a/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
+++ b/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
@@ -101,9 +101,14 @@ private function sanitizeCollectedMessages($messages)
 
             if (!isset($result[$messageId])) {
                 $message['count'] = 1;
+                $message['parameters'] = !empty($message['parameters']) ? array($message['parameters']) : array();
                 $messages[$key]['translation'] = $this->sanitizeString($message['translation']);
                 $result[$messageId] = $message;
             } else {
+                if (!empty($message['parameters'])) {
+                    $result[$messageId]['parameters'][] = $message['parameters'];
+                }
+
                 ++$result[$messageId]['count'];
             }
 
@@ -132,7 +137,7 @@ private function sanitizeString($string, $length = 80)
     {
         $string = trim(preg_replace('/\s+/', ' ', $string));
 
-        if (function_exists('mb_strlen') && false !== $encoding = mb_detect_encoding($string)) {
+        if (false !== $encoding = mb_detect_encoding($string, null, true)) {
             if (mb_strlen($string, $encoding) > $length) {
                 return mb_substr($string, 0, $length - 3, $encoding).'...';
             }
diff --git a/vendor/symfony/translation/DataCollectorTranslator.php b/vendor/symfony/translation/DataCollectorTranslator.php
index 4c69ff6..d507cde 100644
--- a/vendor/symfony/translation/DataCollectorTranslator.php
+++ b/vendor/symfony/translation/DataCollectorTranslator.php
@@ -48,7 +48,7 @@ public function __construct(TranslatorInterface $translator)
     public function trans($id, array $parameters = array(), $domain = null, $locale = null)
     {
         $trans = $this->translator->trans($id, $parameters, $domain, $locale);
-        $this->collectMessage($locale, $domain, $id, $trans);
+        $this->collectMessage($locale, $domain, $id, $trans, $parameters);
 
         return $trans;
     }
@@ -59,7 +59,7 @@ public function trans($id, array $parameters = array(), $domain = null, $locale
     public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
     {
         $trans = $this->translator->transChoice($id, $number, $parameters, $domain, $locale);
-        $this->collectMessage($locale, $domain, $id, $trans);
+        $this->collectMessage($locale, $domain, $id, $trans, $parameters, $number);
 
         return $trans;
     }
@@ -108,9 +108,11 @@ public function getCollectedMessages()
      * @param string|null $locale
      * @param string|null $domain
      * @param string      $id
-     * @param string      $trans
+     * @param string      $translation
+     * @param array|null  $parameters
+     * @param int|null    $number
      */
-    private function collectMessage($locale, $domain, $id, $translation)
+    private function collectMessage($locale, $domain, $id, $translation, $parameters = array(), $number = null)
     {
         if (null === $domain) {
             $domain = 'messages';
@@ -142,6 +144,8 @@ private function collectMessage($locale, $domain, $id, $translation)
             'domain' => $domain,
             'id' => $id,
             'translation' => $translation,
+            'parameters' => $parameters,
+            'transChoiceNumber' => $number,
             'state' => $state,
         );
     }
diff --git a/vendor/symfony/translation/Dumper/CsvFileDumper.php b/vendor/symfony/translation/Dumper/CsvFileDumper.php
index 08005b0..afadcd8 100644
--- a/vendor/symfony/translation/Dumper/CsvFileDumper.php
+++ b/vendor/symfony/translation/Dumper/CsvFileDumper.php
@@ -28,6 +28,16 @@ class CsvFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $handle = fopen('php://memory', 'rb+');
 
         foreach ($messages->all($domain) as $source => $target) {
diff --git a/vendor/symfony/translation/Dumper/FileDumper.php b/vendor/symfony/translation/Dumper/FileDumper.php
index f2f17d6..b217d10 100644
--- a/vendor/symfony/translation/Dumper/FileDumper.php
+++ b/vendor/symfony/translation/Dumper/FileDumper.php
@@ -82,19 +82,42 @@ public function dump(MessageCatalogue $messages, $options = array())
                 }
             }
             // save file
-            file_put_contents($fullpath, $this->format($messages, $domain));
+            file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options));
         }
     }
 
     /**
      * Transforms a domain of a message catalogue to its string representation.
      *
+     * Override this function in child class if $options is used for message formatting.
+     *
+     * @param MessageCatalogue $messages
+     * @param string           $domain
+     * @param array            $options
+     *
+     * @return string representation
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
+        @trigger_error('The '.__METHOD__.' method will replace the format method in 3.0. You should overwrite it instead of overwriting format instead.', E_USER_DEPRECATED);
+
+        return $this->format($messages, $domain);
+    }
+
+    /**
+     * Transforms a domain of a message catalogue to its string representation.
+     *
      * @param MessageCatalogue $messages
      * @param string           $domain
      *
      * @return string representation
+     *
+     * @deprecated since version 2.8, to be removed in 3.0. Overwrite formatCatalogue() instead.
      */
-    abstract protected function format(MessageCatalogue $messages, $domain);
+    protected function format(MessageCatalogue $messages, $domain)
+    {
+        throw new \LogicException('The "FileDumper::format" method needs to be overwritten, you should implement either "format" or "formatCatalogue".');
+    }
 
     /**
      * Gets the file extension of the dumper.
diff --git a/vendor/symfony/translation/Dumper/IcuResFileDumper.php b/vendor/symfony/translation/Dumper/IcuResFileDumper.php
index 0a2ed9f..deb4c7f 100644
--- a/vendor/symfony/translation/Dumper/IcuResFileDumper.php
+++ b/vendor/symfony/translation/Dumper/IcuResFileDumper.php
@@ -30,6 +30,16 @@ class IcuResFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $data = $indexes = $resources = '';
 
         foreach ($messages->all($domain) as $source => $target) {
diff --git a/vendor/symfony/translation/Dumper/IniFileDumper.php b/vendor/symfony/translation/Dumper/IniFileDumper.php
index 45df389..36be230 100644
--- a/vendor/symfony/translation/Dumper/IniFileDumper.php
+++ b/vendor/symfony/translation/Dumper/IniFileDumper.php
@@ -25,6 +25,16 @@ class IniFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $output = '';
 
         foreach ($messages->all($domain) as $source => $target) {
diff --git a/vendor/symfony/translation/Dumper/JsonFileDumper.php b/vendor/symfony/translation/Dumper/JsonFileDumper.php
index 7ad3518..022e165 100644
--- a/vendor/symfony/translation/Dumper/JsonFileDumper.php
+++ b/vendor/symfony/translation/Dumper/JsonFileDumper.php
@@ -25,7 +25,23 @@ class JsonFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
-        return json_encode($messages->all($domain), defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0);
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
+        if (isset($options['json_encoding'])) {
+            $flags = $options['json_encoding'];
+        } else {
+            $flags = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0;
+        }
+
+        return json_encode($messages->all($domain), $flags);
     }
 
     /**
diff --git a/vendor/symfony/translation/Dumper/MoFileDumper.php b/vendor/symfony/translation/Dumper/MoFileDumper.php
index f8dc6ac..a8e123a 100644
--- a/vendor/symfony/translation/Dumper/MoFileDumper.php
+++ b/vendor/symfony/translation/Dumper/MoFileDumper.php
@@ -26,6 +26,16 @@ class MoFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $output = $sources = $targets = $sourceOffsets = $targetOffsets = '';
         $offsets = array();
         $size = 0;
diff --git a/vendor/symfony/translation/Dumper/PhpFileDumper.php b/vendor/symfony/translation/Dumper/PhpFileDumper.php
index b354c12..ea31dda 100644
--- a/vendor/symfony/translation/Dumper/PhpFileDumper.php
+++ b/vendor/symfony/translation/Dumper/PhpFileDumper.php
@@ -25,6 +25,16 @@ class PhpFileDumper extends FileDumper
      */
     protected function format(MessageCatalogue $messages, $domain)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $output = "<?php\n\nreturn ".var_export($messages->all($domain), true).";\n";
 
         return $output;
diff --git a/vendor/symfony/translation/Dumper/PoFileDumper.php b/vendor/symfony/translation/Dumper/PoFileDumper.php
index 983064b..9e27bc7 100644
--- a/vendor/symfony/translation/Dumper/PoFileDumper.php
+++ b/vendor/symfony/translation/Dumper/PoFileDumper.php
@@ -25,6 +25,16 @@ class PoFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain = 'messages')
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $output = 'msgid ""'."\n";
         $output .= 'msgstr ""'."\n";
         $output .= '"Content-Type: text/plain; charset=UTF-8\n"'."\n";
diff --git a/vendor/symfony/translation/Dumper/QtFileDumper.php b/vendor/symfony/translation/Dumper/QtFileDumper.php
index 42aa093..5c2a434 100644
--- a/vendor/symfony/translation/Dumper/QtFileDumper.php
+++ b/vendor/symfony/translation/Dumper/QtFileDumper.php
@@ -25,6 +25,16 @@ class QtFileDumper extends FileDumper
      */
     public function format(MessageCatalogue $messages, $domain)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
+    {
         $dom = new \DOMDocument('1.0', 'utf-8');
         $dom->formatOutput = true;
         $ts = $dom->appendChild($dom->createElement('TS'));
diff --git a/vendor/symfony/translation/Dumper/XliffFileDumper.php b/vendor/symfony/translation/Dumper/XliffFileDumper.php
index 58d1973..6a7f655 100644
--- a/vendor/symfony/translation/Dumper/XliffFileDumper.php
+++ b/vendor/symfony/translation/Dumper/XliffFileDumper.php
@@ -21,22 +21,29 @@
 class XliffFileDumper extends FileDumper
 {
     /**
-     * @var string
-     */
-    private $defaultLocale;
-
-    /**
      * {@inheritdoc}
      */
-    public function dump(MessageCatalogue $messages, $options = array())
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
     {
+        $xliffVersion = '1.2';
+        if (array_key_exists('xliff_version', $options)) {
+            $xliffVersion = $options['xliff_version'];
+        }
+
         if (array_key_exists('default_locale', $options)) {
-            $this->defaultLocale = $options['default_locale'];
+            $defaultLocale = $options['default_locale'];
         } else {
-            $this->defaultLocale = \Locale::getDefault();
+            $defaultLocale = \Locale::getDefault();
+        }
+
+        if ('1.2' === $xliffVersion) {
+            return $this->dumpXliff1($defaultLocale, $messages, $domain, $options);
+        }
+        if ('2.0' === $xliffVersion) {
+            return $this->dumpXliff2($defaultLocale, $messages, $domain, $options);
         }
 
-        parent::dump($messages, $options);
+        throw new \InvalidArgumentException(sprintf('No support implemented for dumping XLIFF version "%s".', $xliffVersion));
     }
 
     /**
@@ -44,6 +51,26 @@ public function dump(MessageCatalogue $messages, $options = array())
      */
     protected function format(MessageCatalogue $messages, $domain)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension()
+    {
+        return 'xlf';
+    }
+
+    private function dumpXliff1($defaultLocale, MessageCatalogue $messages, $domain, array $options = array())
+    {
+        $toolInfo = array('tool-id' => 'symfony', 'tool-name' => 'Symfony');
+        if (array_key_exists('tool_info', $options)) {
+            $toolInfo = array_merge($toolInfo, $options['tool_info']);
+        }
+
         $dom = new \DOMDocument('1.0', 'utf-8');
         $dom->formatOutput = true;
 
@@ -52,11 +79,17 @@ protected function format(MessageCatalogue $messages, $domain)
         $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
 
         $xliffFile = $xliff->appendChild($dom->createElement('file'));
-        $xliffFile->setAttribute('source-language', str_replace('_', '-', $this->defaultLocale));
+        $xliffFile->setAttribute('source-language', str_replace('_', '-', $defaultLocale));
         $xliffFile->setAttribute('target-language', str_replace('_', '-', $messages->getLocale()));
         $xliffFile->setAttribute('datatype', 'plaintext');
         $xliffFile->setAttribute('original', 'file.ext');
 
+        $xliffHead = $xliffFile->appendChild($dom->createElement('header'));
+        $xliffTool = $xliffHead->appendChild($dom->createElement('tool'));
+        foreach ($toolInfo as $id => $value) {
+            $xliffTool->setAttribute($id, $value);
+        }
+
         $xliffBody = $xliffFile->appendChild($dom->createElement('body'));
         foreach ($messages->all($domain) as $source => $target) {
             $translation = $dom->createElement('trans-unit');
@@ -70,11 +103,17 @@ protected function format(MessageCatalogue $messages, $domain)
             // Does the target contain characters requiring a CDATA section?
             $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
 
-            $t = $translation->appendChild($dom->createElement('target'));
+            $targetElement = $dom->createElement('target');
+            $metadata = $messages->getMetadata($source, $domain);
+            if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
+                foreach ($metadata['target-attributes'] as $name => $value) {
+                    $targetElement->setAttribute($name, $value);
+                }
+            }
+            $t = $translation->appendChild($targetElement);
             $t->appendChild($text);
 
-            $metadata = $messages->getMetadata($source, $domain);
-            if (null !== $metadata && array_key_exists('notes', $metadata) && is_array($metadata['notes'])) {
+            if ($this->hasMetadataArrayInfo('notes', $metadata)) {
                 foreach ($metadata['notes'] as $note) {
                     if (!isset($note['content'])) {
                         continue;
@@ -99,11 +138,56 @@ protected function format(MessageCatalogue $messages, $domain)
         return $dom->saveXML();
     }
 
+    private function dumpXliff2($defaultLocale, MessageCatalogue $messages, $domain, array $options = array())
+    {
+        $dom = new \DOMDocument('1.0', 'utf-8');
+        $dom->formatOutput = true;
+
+        $xliff = $dom->appendChild($dom->createElement('xliff'));
+        $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:2.0');
+        $xliff->setAttribute('version', '2.0');
+        $xliff->setAttribute('srcLang', str_replace('_', '-', $defaultLocale));
+        $xliff->setAttribute('trgLang', str_replace('_', '-', $messages->getLocale()));
+
+        $xliffFile = $xliff->appendChild($dom->createElement('file'));
+        $xliffFile->setAttribute('id', $domain.'.'.$messages->getLocale());
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $translation = $dom->createElement('unit');
+            $translation->setAttribute('id', md5($source));
+
+            $segment = $translation->appendChild($dom->createElement('segment'));
+
+            $s = $segment->appendChild($dom->createElement('source'));
+            $s->appendChild($dom->createTextNode($source));
+
+            // Does the target contain characters requiring a CDATA section?
+            $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
+
+            $targetElement = $dom->createElement('target');
+            $metadata = $messages->getMetadata($source, $domain);
+            if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
+                foreach ($metadata['target-attributes'] as $name => $value) {
+                    $targetElement->setAttribute($name, $value);
+                }
+            }
+            $t = $segment->appendChild($targetElement);
+            $t->appendChild($text);
+
+            $xliffFile->appendChild($translation);
+        }
+
+        return $dom->saveXML();
+    }
+
     /**
-     * {@inheritdoc}
+     * @param string     $key
+     * @param array|null $metadata
+     *
+     * @return bool
      */
-    protected function getExtension()
+    private function hasMetadataArrayInfo($key, $metadata = null)
     {
-        return 'xlf';
+        return null !== $metadata && array_key_exists($key, $metadata) && ($metadata[$key] instanceof \Traversable || is_array($metadata[$key]));
     }
 }
diff --git a/vendor/symfony/translation/Dumper/YamlFileDumper.php b/vendor/symfony/translation/Dumper/YamlFileDumper.php
index 870fb98..8e49648 100644
--- a/vendor/symfony/translation/Dumper/YamlFileDumper.php
+++ b/vendor/symfony/translation/Dumper/YamlFileDumper.php
@@ -12,6 +12,7 @@
 namespace Symfony\Component\Translation\Dumper;
 
 use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\Util\ArrayConverter;
 use Symfony\Component\Yaml\Yaml;
 
 /**
@@ -24,13 +25,33 @@ class YamlFileDumper extends FileDumper
     /**
      * {@inheritdoc}
      */
-    protected function format(MessageCatalogue $messages, $domain)
+    public function formatCatalogue(MessageCatalogue $messages, $domain, array $options = array())
     {
         if (!class_exists('Symfony\Component\Yaml\Yaml')) {
             throw new \LogicException('Dumping translations in the YAML format requires the Symfony Yaml component.');
         }
 
-        return Yaml::dump($messages->all($domain));
+        $data = $messages->all($domain);
+
+        if (isset($options['as_tree']) && $options['as_tree']) {
+            $data = ArrayConverter::expandToTree($data);
+        }
+
+        if (isset($options['inline']) && ($inline = (int) $options['inline']) > 0) {
+            return Yaml::dump($data, $inline);
+        }
+
+        return Yaml::dump($data);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function format(MessageCatalogue $messages, $domain)
+    {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use the formatCatalogue() method instead.', E_USER_DEPRECATED);
+
+        return $this->formatCatalogue($messages, $domain);
     }
 
     /**
diff --git a/vendor/symfony/translation/Loader/CsvFileLoader.php b/vendor/symfony/translation/Loader/CsvFileLoader.php
index 2240179..f1d3443 100644
--- a/vendor/symfony/translation/Loader/CsvFileLoader.php
+++ b/vendor/symfony/translation/Loader/CsvFileLoader.php
@@ -11,16 +11,14 @@
 
 namespace Symfony\Component\Translation\Loader;
 
-use Symfony\Component\Translation\Exception\InvalidResourceException;
 use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
 
 /**
  * CsvFileLoader loads translations from CSV files.
  *
  * @author Saša Stamenković <umpirsky@gmail.com>
  */
-class CsvFileLoader extends ArrayLoader
+class CsvFileLoader extends FileLoader
 {
     private $delimiter = ';';
     private $enclosure = '"';
@@ -29,16 +27,8 @@ class CsvFileLoader extends ArrayLoader
     /**
      * {@inheritdoc}
      */
-    public function load($resource, $locale, $domain = 'messages')
+    protected function loadResource($resource)
     {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
         $messages = array();
 
         try {
@@ -56,13 +46,7 @@ public function load($resource, $locale, $domain = 'messages')
             }
         }
 
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
+        return $messages;
     }
 
     /**
diff --git a/vendor/symfony/translation/Loader/FileLoader.php b/vendor/symfony/translation/Loader/FileLoader.php
new file mode 100644
index 0000000..a7f24f4
--- /dev/null
+++ b/vendor/symfony/translation/Loader/FileLoader.php
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Config\Resource\FileResource;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+abstract class FileLoader extends ArrayLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load($resource, $locale, $domain = 'messages')
+    {
+        if (!stream_is_local($resource)) {
+            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+        }
+
+        if (!file_exists($resource)) {
+            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+        }
+
+        $messages = $this->loadResource($resource);
+
+        // empty resource
+        if (null === $messages) {
+            $messages = array();
+        }
+
+        // not an array
+        if (!is_array($messages)) {
+            throw new InvalidResourceException(sprintf('Unable to load file "%s".', $resource));
+        }
+
+        $catalogue = parent::load($messages, $locale, $domain);
+
+        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
+            $catalogue->addResource(new FileResource($resource));
+        }
+
+        return $catalogue;
+    }
+
+    /*
+     * @param string $resource
+     *
+     * @return array
+     *
+     * @throws InvalidResourceException If stream content has an invalid format.
+     */
+    abstract protected function loadResource($resource);
+}
diff --git a/vendor/symfony/translation/Loader/IniFileLoader.php b/vendor/symfony/translation/Loader/IniFileLoader.php
index 1b3a7b1..11d9b27 100644
--- a/vendor/symfony/translation/Loader/IniFileLoader.php
+++ b/vendor/symfony/translation/Loader/IniFileLoader.php
@@ -11,38 +11,18 @@
 
 namespace Symfony\Component\Translation\Loader;
 
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
 /**
  * IniFileLoader loads translations from an ini file.
  *
  * @author stealth35
  */
-class IniFileLoader extends ArrayLoader
+class IniFileLoader extends FileLoader
 {
     /**
      * {@inheritdoc}
      */
-    public function load($resource, $locale, $domain = 'messages')
+    protected function loadResource($resource)
     {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        $messages = parse_ini_file($resource, true);
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
+        return parse_ini_file($resource, true);
     }
 }
diff --git a/vendor/symfony/translation/Loader/JsonFileLoader.php b/vendor/symfony/translation/Loader/JsonFileLoader.php
index 81717f3..ce4e91f 100644
--- a/vendor/symfony/translation/Loader/JsonFileLoader.php
+++ b/vendor/symfony/translation/Loader/JsonFileLoader.php
@@ -12,29 +12,19 @@
 namespace Symfony\Component\Translation\Loader;
 
 use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
 
 /**
  * JsonFileLoader loads translations from an json file.
  *
  * @author singles
  */
-class JsonFileLoader extends ArrayLoader
+class JsonFileLoader extends FileLoader
 {
     /**
      * {@inheritdoc}
      */
-    public function load($resource, $locale, $domain = 'messages')
+    protected function loadResource($resource)
     {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
         $messages = array();
         if ($data = file_get_contents($resource)) {
             $messages = json_decode($data, true);
@@ -44,14 +34,7 @@ public function load($resource, $locale, $domain = 'messages')
             }
         }
 
-        if (null === $messages) {
-            $messages = array();
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-        $catalogue->addResource(new FileResource($resource));
-
-        return $catalogue;
+        return $messages;
     }
 
     /**
diff --git a/vendor/symfony/translation/Loader/MoFileLoader.php b/vendor/symfony/translation/Loader/MoFileLoader.php
index 746fd52..c27a88e 100644
--- a/vendor/symfony/translation/Loader/MoFileLoader.php
+++ b/vendor/symfony/translation/Loader/MoFileLoader.php
@@ -12,13 +12,11 @@
 namespace Symfony\Component\Translation\Loader;
 
 use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
 
 /**
  * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/)
  */
-class MoFileLoader extends ArrayLoader
+class MoFileLoader extends FileLoader
 {
     /**
      * Magic used for validating the format of a MO file as well as
@@ -43,48 +41,13 @@ class MoFileLoader extends ArrayLoader
      */
     const MO_HEADER_SIZE = 28;
 
-    public function load($resource, $locale, $domain = 'messages')
-    {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        $messages = $this->parse($resource);
-
-        // empty file
-        if (null === $messages) {
-            $messages = array();
-        }
-
-        // not an array
-        if (!is_array($messages)) {
-            throw new InvalidResourceException(sprintf('The file "%s" must contain a valid mo file.', $resource));
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
-    }
-
     /**
      * Parses machine object (MO) format, independent of the machine's endian it
      * was created on. Both 32bit and 64bit systems are supported.
      *
-     * @param resource $resource
-     *
-     * @return array
-     *
-     * @throws InvalidResourceException If stream content has an invalid format.
+     * {@inheritdoc}
      */
-    private function parse($resource)
+    protected function loadResource($resource)
     {
         $stream = fopen($resource, 'r');
 
diff --git a/vendor/symfony/translation/Loader/PhpFileLoader.php b/vendor/symfony/translation/Loader/PhpFileLoader.php
index a52e0bb..a0050e8 100644
--- a/vendor/symfony/translation/Loader/PhpFileLoader.php
+++ b/vendor/symfony/translation/Loader/PhpFileLoader.php
@@ -11,38 +11,18 @@
 
 namespace Symfony\Component\Translation\Loader;
 
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
 /**
  * PhpFileLoader loads translations from PHP files returning an array of translations.
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class PhpFileLoader extends ArrayLoader
+class PhpFileLoader extends FileLoader
 {
     /**
      * {@inheritdoc}
      */
-    public function load($resource, $locale, $domain = 'messages')
+    protected function loadResource($resource)
     {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        $messages = require $resource;
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
+        return require $resource;
     }
 }
diff --git a/vendor/symfony/translation/Loader/PoFileLoader.php b/vendor/symfony/translation/Loader/PoFileLoader.php
index b5d12e9..84664d6 100644
--- a/vendor/symfony/translation/Loader/PoFileLoader.php
+++ b/vendor/symfony/translation/Loader/PoFileLoader.php
@@ -11,47 +11,12 @@
 
 namespace Symfony\Component\Translation\Loader;
 
-use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
-
 /**
  * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/)
  * @copyright Copyright (c) 2012, Clemens Tolboom
  */
-class PoFileLoader extends ArrayLoader
+class PoFileLoader extends FileLoader
 {
-    public function load($resource, $locale, $domain = 'messages')
-    {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        $messages = $this->parse($resource);
-
-        // empty file
-        if (null === $messages) {
-            $messages = array();
-        }
-
-        // not an array
-        if (!is_array($messages)) {
-            throw new InvalidResourceException(sprintf('The file "%s" must contain a valid po file.', $resource));
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
-    }
-
     /**
      * Parses portable object (PO) format.
      *
@@ -93,11 +58,9 @@ public function load($resource, $locale, $domain = 'messages')
      *
      * Items with an empty id are ignored.
      *
-     * @param resource $resource
-     *
-     * @return array
+     * {@inheritdoc}
      */
-    private function parse($resource)
+    protected function loadResource($resource)
     {
         $stream = fopen($resource, 'r');
 
diff --git a/vendor/symfony/translation/Loader/XliffFileLoader.php b/vendor/symfony/translation/Loader/XliffFileLoader.php
index 0e335db..bdca110 100644
--- a/vendor/symfony/translation/Loader/XliffFileLoader.php
+++ b/vendor/symfony/translation/Loader/XliffFileLoader.php
@@ -37,10 +37,49 @@ public function load($resource, $locale, $domain = 'messages')
             throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
         }
 
-        list($xml, $encoding) = $this->parseFile($resource);
-        $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:1.2');
-
         $catalogue = new MessageCatalogue($locale);
+        $this->extract($resource, $catalogue, $domain);
+
+        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
+            $catalogue->addResource(new FileResource($resource));
+        }
+
+        return $catalogue;
+    }
+
+    private function extract($resource, MessageCatalogue $catalogue, $domain)
+    {
+        try {
+            $dom = XmlUtils::loadFile($resource);
+        } catch (\InvalidArgumentException $e) {
+            throw new InvalidResourceException(sprintf('Unable to load "%s": %s', $resource, $e->getMessage()), $e->getCode(), $e);
+        }
+
+        $xliffVersion = $this->getVersionNumber($dom);
+        $this->validateSchema($xliffVersion, $dom, $this->getSchema($xliffVersion));
+
+        if ('1.2' === $xliffVersion) {
+            $this->extractXliff1($dom, $catalogue, $domain);
+        }
+
+        if ('2.0' === $xliffVersion) {
+            $this->extractXliff2($dom, $catalogue, $domain);
+        }
+    }
+
+    /**
+     * Extract messages and metadata from DOMDocument into a MessageCatalogue.
+     *
+     * @param \DOMDocument     $dom       Source to extract messages and metadata
+     * @param MessageCatalogue $catalogue Catalogue where we'll collect messages and metadata
+     * @param string           $domain    The domain
+     */
+    private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, $domain)
+    {
+        $xml = simplexml_import_dom($dom);
+        $encoding = strtoupper($dom->encoding);
+
+        $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:1.2');
         foreach ($xml->xpath('//xliff:trans-unit') as $translation) {
             $attributes = $translation->attributes();
 
@@ -55,31 +94,52 @@ public function load($resource, $locale, $domain = 'messages')
 
             $catalogue->set((string) $source, $target, $domain);
 
-            if (isset($translation->note)) {
-                $notes = array();
-                foreach ($translation->note as $xmlNote) {
-                    $noteAttributes = $xmlNote->attributes();
-                    $note = array('content' => $this->utf8ToCharset((string) $xmlNote, $encoding));
-                    if (isset($noteAttributes['priority'])) {
-                        $note['priority'] = (int) $noteAttributes['priority'];
-                    }
+            $metadata = array();
+            if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) {
+                $metadata['notes'] = $notes;
+            }
+            if (isset($translation->target) && $translation->target->attributes()) {
+                $metadata['target-attributes'] = array();
+                foreach ($translation->target->attributes() as $key => $value) {
+                    $metadata['target-attributes'][$key] = (string) $value;
+                }
+            }
 
-                    if (isset($noteAttributes['from'])) {
-                        $note['from'] = (string) $noteAttributes['from'];
-                    }
+            $catalogue->setMetadata((string) $source, $metadata, $domain);
+        }
+    }
 
-                    $notes[] = $note;
-                }
+    /**
+     * @param \DOMDocument     $dom
+     * @param MessageCatalogue $catalogue
+     * @param string           $domain
+     */
+    private function extractXliff2(\DOMDocument $dom, MessageCatalogue $catalogue, $domain)
+    {
+        $xml = simplexml_import_dom($dom);
+        $encoding = strtoupper($dom->encoding);
+
+        $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0');
+
+        foreach ($xml->xpath('//xliff:unit/xliff:segment') as $segment) {
+            $source = $segment->source;
 
-                $catalogue->setMetadata((string) $source, array('notes' => $notes), $domain);
+            // If the xlf file has another encoding specified, try to convert it because
+            // simple_xml will always return utf-8 encoded values
+            $target = $this->utf8ToCharset((string) (isset($segment->target) ? $segment->target : $source), $encoding);
+
+            $catalogue->set((string) $source, $target, $domain);
+
+            $metadata = array();
+            if (isset($segment->target) && $segment->target->attributes()) {
+                $metadata['target-attributes'] = array();
+                foreach ($segment->target->attributes() as $key => $value) {
+                    $metadata['target-attributes'][$key] = (string) $value;
+                }
             }
-        }
 
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
+            $catalogue->setMetadata((string) $source, $metadata, $domain);
         }
-
-        return $catalogue;
     }
 
     /**
@@ -93,57 +153,24 @@ public function load($resource, $locale, $domain = 'messages')
     private function utf8ToCharset($content, $encoding = null)
     {
         if ('UTF-8' !== $encoding && !empty($encoding)) {
-            if (function_exists('mb_convert_encoding')) {
-                return mb_convert_encoding($content, $encoding, 'UTF-8');
-            }
-
-            if (function_exists('iconv')) {
-                return iconv('UTF-8', $encoding, $content);
-            }
-
-            throw new \RuntimeException('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).');
+            return mb_convert_encoding($content, $encoding, 'UTF-8');
         }
 
         return $content;
     }
 
     /**
-     * Validates and parses the given file into a SimpleXMLElement.
-     *
-     * @param string $file
-     *
-     * @throws \RuntimeException
-     *
-     * @return \SimpleXMLElement
+     * @param string       $file
+     * @param \DOMDocument $dom
+     * @param string       $schema source of the schema
      *
      * @throws InvalidResourceException
      */
-    private function parseFile($file)
+    private function validateSchema($file, \DOMDocument $dom, $schema)
     {
-        try {
-            $dom = XmlUtils::loadFile($file);
-        } catch (\InvalidArgumentException $e) {
-            throw new InvalidResourceException(sprintf('Unable to load "%s": %s', $file, $e->getMessage()), $e->getCode(), $e);
-        }
-
         $internalErrors = libxml_use_internal_errors(true);
 
-        $location = str_replace('\\', '/', __DIR__).'/schema/dic/xliff-core/xml.xsd';
-        $parts = explode('/', $location);
-        if (0 === stripos($location, 'phar://')) {
-            $tmpfile = tempnam(sys_get_temp_dir(), 'sf2');
-            if ($tmpfile) {
-                copy($location, $tmpfile);
-                $parts = explode('/', str_replace('\\', '/', $tmpfile));
-            }
-        }
-        $drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
-        $location = 'file:///'.$drive.implode('/', array_map('rawurlencode', $parts));
-
-        $source = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-1.2-strict.xsd');
-        $source = str_replace('http://www.w3.org/2001/xml.xsd', $location, $source);
-
-        if (!@$dom->schemaValidateSource($source)) {
+        if (!@$dom->schemaValidateSource($schema)) {
             throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: %s', $file, implode("\n", $this->getXmlErrors($internalErrors))));
         }
 
@@ -151,8 +178,46 @@ private function parseFile($file)
 
         libxml_clear_errors();
         libxml_use_internal_errors($internalErrors);
+    }
 
-        return array(simplexml_import_dom($dom), strtoupper($dom->encoding));
+    private function getSchema($xliffVersion)
+    {
+        if ('1.2' === $xliffVersion) {
+            $schemaSource = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-1.2-strict.xsd');
+            $xmlUri = 'http://www.w3.org/2001/xml.xsd';
+        } elseif ('2.0' === $xliffVersion) {
+            $schemaSource = file_get_contents(__DIR__.'/schema/dic/xliff-core/xliff-core-2.0.xsd');
+            $xmlUri = 'informativeCopiesOf3rdPartySchemas/w3c/xml.xsd';
+        } else {
+            throw new \InvalidArgumentException(sprintf('No support implemented for loading XLIFF version "%s".', $xliffVersion));
+        }
+
+        return $this->fixXmlLocation($schemaSource, $xmlUri);
+    }
+
+    /**
+     * Internally changes the URI of a dependent xsd to be loaded locally.
+     *
+     * @param string $schemaSource Current content of schema file
+     * @param string $xmlUri       External URI of XML to convert to local
+     *
+     * @return string
+     */
+    private function fixXmlLocation($schemaSource, $xmlUri)
+    {
+        $newPath = str_replace('\\', '/', __DIR__).'/schema/dic/xliff-core/xml.xsd';
+        $parts = explode('/', $newPath);
+        if (0 === stripos($newPath, 'phar://')) {
+            $tmpfile = tempnam(sys_get_temp_dir(), 'sf2');
+            if ($tmpfile) {
+                copy($newPath, $tmpfile);
+                $parts = explode('/', str_replace('\\', '/', $tmpfile));
+            }
+        }
+        $drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
+        $newPath = 'file:///'.$drive.implode('/', array_map('rawurlencode', $parts));
+
+        return str_replace($xmlUri, $newPath, $schemaSource);
     }
 
     /**
@@ -181,4 +246,68 @@ private function getXmlErrors($internalErrors)
 
         return $errors;
     }
+
+    /**
+     * Gets xliff file version based on the root "version" attribute.
+     * Defaults to 1.2 for backwards compatibility.
+     *
+     * @param \DOMDocument $dom
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return string
+     */
+    private function getVersionNumber(\DOMDocument $dom)
+    {
+        /** @var \DOMNode $xliff */
+        foreach ($dom->getElementsByTagName('xliff') as $xliff) {
+            $version = $xliff->attributes->getNamedItem('version');
+            if ($version) {
+                return $version->nodeValue;
+            }
+
+            $namespace = $xliff->attributes->getNamedItem('xmlns');
+            if ($namespace) {
+                if (substr_compare('urn:oasis:names:tc:xliff:document:', $namespace->nodeValue, 0, 34) !== 0) {
+                    throw new \InvalidArgumentException(sprintf('Not a valid XLIFF namespace "%s"', $namespace));
+                }
+
+                return substr($namespace, 34);
+            }
+        }
+
+        // Falls back to v1.2
+        return '1.2';
+    }
+
+    /*
+     * @param \SimpleXMLElement|null $noteElement
+     * @param string|null            $encoding
+     *
+     * @return array
+     */
+    private function parseNotesMetadata(\SimpleXMLElement $noteElement = null, $encoding = null)
+    {
+        $notes = array();
+
+        if (null === $noteElement) {
+            return $notes;
+        }
+
+        foreach ($noteElement as $xmlNote) {
+            $noteAttributes = $xmlNote->attributes();
+            $note = array('content' => $this->utf8ToCharset((string) $xmlNote, $encoding));
+            if (isset($noteAttributes['priority'])) {
+                $note['priority'] = (int) $noteAttributes['priority'];
+            }
+
+            if (isset($noteAttributes['from'])) {
+                $note['from'] = (string) $noteAttributes['from'];
+            }
+
+            $notes[] = $note;
+        }
+
+        return $notes;
+    }
 }
diff --git a/vendor/symfony/translation/Loader/YamlFileLoader.php b/vendor/symfony/translation/Loader/YamlFileLoader.php
index a34cf05..5d9a3ad 100644
--- a/vendor/symfony/translation/Loader/YamlFileLoader.php
+++ b/vendor/symfony/translation/Loader/YamlFileLoader.php
@@ -12,8 +12,6 @@
 namespace Symfony\Component\Translation\Loader;
 
 use Symfony\Component\Translation\Exception\InvalidResourceException;
-use Symfony\Component\Translation\Exception\NotFoundResourceException;
-use Symfony\Component\Config\Resource\FileResource;
 use Symfony\Component\Yaml\Parser as YamlParser;
 use Symfony\Component\Yaml\Exception\ParseException;
 
@@ -22,28 +20,20 @@
  *
  * @author Fabien Potencier <fabien@symfony.com>
  */
-class YamlFileLoader extends ArrayLoader
+class YamlFileLoader extends FileLoader
 {
     private $yamlParser;
 
     /**
      * {@inheritdoc}
      */
-    public function load($resource, $locale, $domain = 'messages')
+    protected function loadResource($resource)
     {
-        if (!stream_is_local($resource)) {
-            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
-        }
-
-        if (!file_exists($resource)) {
-            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
-        }
-
-        if (!class_exists('Symfony\Component\Yaml\Parser')) {
-            throw new \LogicException('Loading translations from the YAML format requires the Symfony Yaml component.');
-        }
-
         if (null === $this->yamlParser) {
+            if (!class_exists('Symfony\Component\Yaml\Parser')) {
+                throw new \LogicException('Loading translations from the YAML format requires the Symfony Yaml component.');
+            }
+
             $this->yamlParser = new YamlParser();
         }
 
@@ -53,22 +43,6 @@ public function load($resource, $locale, $domain = 'messages')
             throw new InvalidResourceException(sprintf('Error parsing YAML, invalid file "%s"', $resource), 0, $e);
         }
 
-        // empty file
-        if (null === $messages) {
-            $messages = array();
-        }
-
-        // not an array
-        if (!is_array($messages)) {
-            throw new InvalidResourceException(sprintf('The file "%s" must contain a YAML array.', $resource));
-        }
-
-        $catalogue = parent::load($messages, $locale, $domain);
-
-        if (class_exists('Symfony\Component\Config\Resource\FileResource')) {
-            $catalogue->addResource(new FileResource($resource));
-        }
-
-        return $catalogue;
+        return $messages;
     }
 }
diff --git a/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-2.0.xsd b/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-2.0.xsd
new file mode 100644
index 0000000..963232f
--- /dev/null
+++ b/vendor/symfony/translation/Loader/schema/dic/xliff-core/xliff-core-2.0.xsd
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    XLIFF Version 2.0
+    OASIS Standard
+    05 August 2014
+    Copyright (c) OASIS Open 2014. All rights reserved.
+    Source: http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/
+     -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    elementFormDefault="qualified"
+    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
+    targetNamespace="urn:oasis:names:tc:xliff:document:2.0">
+
+  <!-- Import -->
+
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+      schemaLocation="informativeCopiesOf3rdPartySchemas/w3c/xml.xsd"/>
+
+  <!-- Element Group -->
+
+  <xs:group name="inline">
+    <xs:choice>
+      <xs:element ref="xlf:cp"/>
+      <xs:element ref="xlf:ph"/>
+      <xs:element ref="xlf:pc"/>
+      <xs:element ref="xlf:sc"/>
+      <xs:element ref="xlf:ec"/>
+      <xs:element ref="xlf:mrk"/>
+      <xs:element ref="xlf:sm"/>
+      <xs:element ref="xlf:em"/>
+    </xs:choice>
+  </xs:group>
+
+  <!-- Attribute Types -->
+
+  <xs:simpleType name="yesNo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="no"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="yesNoFirstNo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="firstNo"/>
+      <xs:enumeration value="no"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="dirValue">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="ltr"/>
+      <xs:enumeration value="rtl"/>
+      <xs:enumeration value="auto"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="appliesTo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="source"/>
+      <xs:enumeration value="target"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="userDefinedValue">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[^\s:]+:[^\s:]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="attrType_type">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="fmt"/>
+      <xs:enumeration value="ui"/>
+      <xs:enumeration value="quote"/>
+      <xs:enumeration value="link"/>
+      <xs:enumeration value="image"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="typeForMrkValues">
+    <xs:restriction base="xs:NMTOKEN">
+      <xs:enumeration value="generic"/>
+      <xs:enumeration value="comment"/>
+      <xs:enumeration value="term"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="attrType_typeForMrk">
+    <xs:union memberTypes="xlf:typeForMrkValues xlf:userDefinedValue"/>
+  </xs:simpleType>
+
+  <xs:simpleType name="priorityValue">
+    <xs:restriction base="xs:positiveInteger">
+      <xs:minInclusive value="1"/>
+      <xs:maxInclusive value="10"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="stateType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="initial"/>
+      <xs:enumeration value="translated"/>
+      <xs:enumeration value="reviewed"/>
+      <xs:enumeration value="final"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Structural Elements -->
+
+  <xs:element name="xliff">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:file"/>
+      </xs:sequence>
+      <xs:attribute name="version" use="required"/>
+      <xs:attribute name="srcLang" use="required"/>
+      <xs:attribute name="trgLang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional" default="default"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="file">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:skeleton"/>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:choice minOccurs="1" maxOccurs="unbounded">
+          <xs:element ref="xlf:unit"/>
+          <xs:element ref="xlf:group"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="original" use="optional"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="skeleton">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+      </xs:sequence>
+      <xs:attribute name="href" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="group">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="xlf:unit"/>
+          <xs:element ref="xlf:group"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="name" use="optional"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="unit">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:originalData"/>
+        <xs:choice minOccurs="1" maxOccurs="unbounded">
+          <xs:element ref="xlf:segment"/>
+          <xs:element ref="xlf:ignorable"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="name" use="optional"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="segment">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="state" use="optional" type="xlf:stateType" default="initial"/>
+      <xs:attribute name="subState" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ignorable">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="notes">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:note"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="note">
+    <xs:complexType mixed="true">
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="appliesTo" use="optional" type="xlf:appliesTo"/>
+      <xs:attribute name="category" use="optional"/>
+      <xs:attribute name="priority" use="optional" type="xlf:priorityValue" default="1"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="originalData">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:data"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="data">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="xlf:cp"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute ref="xml:space" use="optional" fixed="preserve"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="source">
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute ref="xml:lang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="target">
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute ref="xml:lang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:attribute name="order" use="optional" type="xs:positiveInteger"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- Inline Elements -->
+
+  <xs:element name="cp">
+    <!-- Code Point -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="hex" use="required" type="xs:hexBinary"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ph">
+    <!-- Placeholder -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="pc">
+    <!-- Paired Code -->
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dispEnd" use="optional"/>
+      <xs:attribute name="dispStart" use="optional"/>
+      <xs:attribute name="equivEnd" use="optional"/>
+      <xs:attribute name="equivStart" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRefEnd" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRefStart" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlowsEnd" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subFlowsStart" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="sc">
+    <!-- Start Code -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ec">
+    <!-- End Code -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
+      <xs:attribute name="startRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mrk">
+    <!-- Annotation Marker -->
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
+      <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
+      <xs:attribute name="value" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="sm">
+    <!-- Start Annotation Marker -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
+      <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
+      <xs:attribute name="value" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="em">
+    <!-- End Annotation Marker -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="startRef" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+
+</xs:schema>
diff --git a/vendor/symfony/translation/PluralizationRules.php b/vendor/symfony/translation/PluralizationRules.php
index f250423..0974821 100644
--- a/vendor/symfony/translation/PluralizationRules.php
+++ b/vendor/symfony/translation/PluralizationRules.php
@@ -131,6 +131,7 @@ public static function get($number, $locale)
             case 'fr':
             case 'gun':
             case 'hi':
+            case 'hy':
             case 'ln':
             case 'mg':
             case 'nso':
diff --git a/vendor/symfony/translation/README.md b/vendor/symfony/translation/README.md
index 2b46b51..984f40d 100644
--- a/vendor/symfony/translation/README.md
+++ b/vendor/symfony/translation/README.md
@@ -28,7 +28,7 @@ https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/TranslationServ
 
 Documentation:
 
-https://symfony.com/doc/2.7/book/translation.html
+https://symfony.com/doc/2.8/book/translation.html
 
 You can run the unit tests with the following command:
 
diff --git a/vendor/symfony/translation/Translator.php b/vendor/symfony/translation/Translator.php
index c6d8c16..ef8c7be 100644
--- a/vendor/symfony/translation/Translator.php
+++ b/vendor/symfony/translation/Translator.php
@@ -267,9 +267,13 @@ protected function getLoaders()
      * @param string|null $locale Locale of translations, by default is current locale
      *
      * @return array[array] indexed by catalog
+     *
+     * @deprecated since version 2.8, to be removed in 3.0. Use TranslatorBagInterface::getCatalogue() method instead.
      */
     public function getMessages($locale = null)
     {
+        @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use TranslatorBagInterface::getCatalogue() method instead.', E_USER_DEPRECATED);
+
         $catalogue = $this->getCatalogue($locale);
         $messages = $catalogue->all();
         while ($catalogue = $catalogue->getFallbackCatalogue()) {
diff --git a/vendor/symfony/translation/Util/ArrayConverter.php b/vendor/symfony/translation/Util/ArrayConverter.php
new file mode 100644
index 0000000..60a55e9
--- /dev/null
+++ b/vendor/symfony/translation/Util/ArrayConverter.php
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Util;
+
+/**
+ * ArrayConverter generates tree like structure from a message catalogue.
+ * e.g. this
+ *   'foo.bar1' => 'test1',
+ *   'foo.bar2' => 'test2'
+ * converts to follows:
+ *   foo:
+ *     bar1: test1
+ *     bar2: test2.
+ *
+ * @author Gennady Telegin <gtelegin@gmail.com>
+ */
+class ArrayConverter
+{
+    /**
+     * Converts linear messages array to tree-like array.
+     * For example this rray('foo.bar' => 'value') will be converted to array('foo' => array('bar' => 'value')).
+     *
+     * @param array $messages Linear messages array
+     *
+     * @return array Tree-like messages array
+     */
+    public static function expandToTree(array $messages)
+    {
+        $tree = array();
+
+        foreach ($messages as $id => $value) {
+            $referenceToElement = &self::getElementByPath($tree, explode('.', $id));
+
+            $referenceToElement = $value;
+
+            unset($referenceToElement);
+        }
+
+        return $tree;
+    }
+
+    private static function &getElementByPath(array &$tree, array $parts)
+    {
+        $elem = &$tree;
+        $parentOfElem = null;
+
+        foreach ($parts as $i => $part) {
+            if (isset($elem[$part]) && is_string($elem[$part])) {
+                /* Process next case:
+                 *    'foo': 'test1',
+                 *    'foo.bar': 'test2'
+                 *
+                 * $tree['foo'] was string before we found array {bar: test2}.
+                 *  Treat new element as string too, e.g. add $tree['foo.bar'] = 'test2';
+                 */
+                $elem = &$elem[ implode('.', array_slice($parts, $i)) ];
+                break;
+            }
+            $parentOfElem = &$elem;
+            $elem = &$elem[$part];
+        }
+
+        if (is_array($elem) && count($elem) > 0 && $parentOfElem) {
+            /* Process next case:
+             *    'foo.bar': 'test1'
+             *    'foo': 'test2'
+             *
+             * $tree['foo'] was array = {bar: 'test1'} before we found string constant `foo`.
+             * Cancel treating $tree['foo'] as array and cancel back it expansion,
+             *  e.g. make it $tree['foo.bar'] = 'test1' again.
+             */
+            self::cancelExpand($parentOfElem, $part, $elem);
+        }
+
+        return $elem;
+    }
+
+    private static function cancelExpand(array &$tree, $prefix, array $node)
+    {
+        $prefix .= '.';
+
+        foreach ($node as $id => $value) {
+            if (is_string($value)) {
+                $tree[$prefix.$id] = $value;
+            } else {
+                self::cancelExpand($tree, $prefix.$id, $value);
+            }
+        }
+    }
+}
diff --git a/vendor/symfony/translation/composer.json b/vendor/symfony/translation/composer.json
index ac833a4..79ff646 100644
--- a/vendor/symfony/translation/composer.json
+++ b/vendor/symfony/translation/composer.json
@@ -16,12 +16,13 @@
         }
     ],
     "require": {
-        "php": ">=5.3.9"
+        "php": ">=5.3.9",
+        "symfony/polyfill-mbstring": "~1.0"
     },
     "require-dev": {
-        "symfony/config": "~2.7",
-        "symfony/intl": "~2.4",
-        "symfony/yaml": "~2.2",
+        "symfony/config": "~2.8",
+        "symfony/intl": "~2.4|~3.0.0",
+        "symfony/yaml": "~2.2|~3.0.0",
         "psr/log": "~1.0"
     },
     "conflict": {
@@ -33,12 +34,15 @@
         "psr/log": "To use logging capability in translator"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Translation\\": "" }
+        "psr-4": { "Symfony\\Component\\Translation\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/translation/phpunit.xml.dist b/vendor/symfony/translation/phpunit.xml.dist
index 16cca4a..c25ec5e 100644
--- a/vendor/symfony/translation/phpunit.xml.dist
+++ b/vendor/symfony/translation/phpunit.xml.dist
@@ -20,8 +20,8 @@
         <whitelist>
             <directory>./</directory>
             <exclude>
-                <directory>./vendor</directory>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/symfony/validator/CHANGELOG.md b/vendor/symfony/validator/CHANGELOG.md
index 4531286..0ff667b 100644
--- a/vendor/symfony/validator/CHANGELOG.md
+++ b/vendor/symfony/validator/CHANGELOG.md
@@ -1,6 +1,11 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * added the BIC (SWIFT-Code) validator
+
 2.7.0
 -----
 
diff --git a/vendor/symfony/validator/ConstraintViolationInterface.php b/vendor/symfony/validator/ConstraintViolationInterface.php
index 1ed09b3..eff79b6 100644
--- a/vendor/symfony/validator/ConstraintViolationInterface.php
+++ b/vendor/symfony/validator/ConstraintViolationInterface.php
@@ -120,7 +120,7 @@ public function getInvalidValue();
     /**
      * Returns a machine-digestible error code for the violation.
      *
-     * @return mixed The error code.
+     * @return string|null The error code.
      */
     public function getCode();
 }
diff --git a/vendor/symfony/validator/Constraints/AbstractComparison.php b/vendor/symfony/validator/Constraints/AbstractComparison.php
index fb1f1f3..78db943 100644
--- a/vendor/symfony/validator/Constraints/AbstractComparison.php
+++ b/vendor/symfony/validator/Constraints/AbstractComparison.php
@@ -18,6 +18,7 @@
  * Used for the comparison of values.
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 abstract class AbstractComparison extends Constraint
 {
diff --git a/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php b/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
index 67d73a5..ce04874 100644
--- a/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
+++ b/vendor/symfony/validator/Constraints/AbstractComparisonValidator.php
@@ -60,12 +60,14 @@ public function validate($value, Constraint $constraint)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING | self::PRETTY_DATE))
                     ->setParameter('{{ compared_value }}', $this->formatValue($comparedValue, self::OBJECT_TO_STRING | self::PRETTY_DATE))
                     ->setParameter('{{ compared_value_type }}', $this->formatTypeOf($comparedValue))
+                    ->setCode($this->getErrorCode())
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING | self::PRETTY_DATE))
                     ->setParameter('{{ compared_value }}', $this->formatValue($comparedValue, self::OBJECT_TO_STRING | self::PRETTY_DATE))
                     ->setParameter('{{ compared_value_type }}', $this->formatTypeOf($comparedValue))
+                    ->setCode($this->getErrorCode())
                     ->addViolation();
             }
         }
@@ -80,4 +82,13 @@ public function validate($value, Constraint $constraint)
      * @return bool true if the relationship is valid, false otherwise
      */
     abstract protected function compareValues($value1, $value2);
+
+    /**
+     * Returns the error code used if the comparison fails.
+     *
+     * @return string|null The error code or `null` if no code should be set
+     */
+    protected function getErrorCode()
+    {
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/Bic.php b/vendor/symfony/validator/Constraints/Bic.php
new file mode 100644
index 0000000..dee5d52
--- /dev/null
+++ b/vendor/symfony/validator/Constraints/Bic.php
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Validator\Constraints;
+
+use Symfony\Component\Validator\Constraint;
+
+/**
+ * @Annotation
+ * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
+ *
+ * @author Michael Hirschler <michael.vhirsch@gmail.com>
+ */
+class Bic extends Constraint
+{
+    const INVALID_LENGTH_ERROR = '66dad313-af0b-4214-8566-6c799be9789c';
+    const INVALID_CHARACTERS_ERROR = 'f424c529-7add-4417-8f2d-4b656e4833e2';
+    const INVALID_BANK_CODE_ERROR = '00559357-6170-4f29-aebd-d19330aa19cf';
+    const INVALID_COUNTRY_CODE_ERROR = '1ce76f8d-3c1f-451c-9e62-fe9c3ed486ae';
+    const INVALID_CASE_ERROR = '11884038-3312-4ae5-9d04-699f782130c7';
+
+    protected static $errorNames = array(
+        self::INVALID_LENGTH_ERROR => 'INVALID_LENGTH_ERROR',
+        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
+        self::INVALID_BANK_CODE_ERROR => 'INVALID_BANK_CODE_ERROR',
+        self::INVALID_COUNTRY_CODE_ERROR => 'INVALID_COUNTRY_CODE_ERROR',
+        self::INVALID_CASE_ERROR => 'INVALID_CASE_ERROR',
+    );
+
+    public $message = 'This is not a valid Business Identifier Code (BIC).';
+}
diff --git a/vendor/symfony/validator/Constraints/BicValidator.php b/vendor/symfony/validator/Constraints/BicValidator.php
new file mode 100644
index 0000000..de32708
--- /dev/null
+++ b/vendor/symfony/validator/Constraints/BicValidator.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Validator\Constraints;
+
+use Symfony\Component\Validator\Constraint;
+use Symfony\Component\Validator\ConstraintValidator;
+
+/**
+ * @author Michael Hirschler <michael.vhirsch@gmail.com>
+ *
+ * @link https://en.wikipedia.org/wiki/ISO_9362#Structure
+ */
+class BicValidator extends ConstraintValidator
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function validate($value, Constraint $constraint)
+    {
+        if (null === $value || '' === $value) {
+            return;
+        }
+
+        $canonicalize = str_replace(' ', '', $value);
+
+        // the bic must be either 8 or 11 characters long
+        if (!in_array(strlen($canonicalize), array(8, 11))) {
+            $this->context->buildViolation($constraint->message)
+                ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(Bic::INVALID_LENGTH_ERROR)
+                ->addViolation();
+        }
+
+        // must contain alphanumeric values only
+        if (!ctype_alnum($canonicalize)) {
+            $this->context->buildViolation($constraint->message)
+                ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(Bic::INVALID_CHARACTERS_ERROR)
+                ->addViolation();
+        }
+
+        // first 4 letters must be alphabetic (bank code)
+        if (!ctype_alpha(substr($canonicalize, 0, 4))) {
+            $this->context->buildViolation($constraint->message)
+                ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(Bic::INVALID_BANK_CODE_ERROR)
+                ->addViolation();
+        }
+
+        // next 2 letters must be alphabetic (country code)
+        if (!ctype_alpha(substr($canonicalize, 4, 2))) {
+            $this->context->buildViolation($constraint->message)
+                ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(Bic::INVALID_COUNTRY_CODE_ERROR)
+                ->addViolation();
+        }
+
+        // should contain uppercase characters only
+        if (strtoupper($canonicalize) !== $canonicalize) {
+            $this->context->buildViolation($constraint->message)
+                ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(Bic::INVALID_CASE_ERROR)
+                ->addViolation();
+        }
+    }
+}
diff --git a/vendor/symfony/validator/Constraints/Blank.php b/vendor/symfony/validator/Constraints/Blank.php
index ad93c74..030b21f 100644
--- a/vendor/symfony/validator/Constraints/Blank.php
+++ b/vendor/symfony/validator/Constraints/Blank.php
@@ -21,5 +21,11 @@
  */
 class Blank extends Constraint
 {
+    const NOT_BLANK_ERROR = '183ad2de-533d-4796-a439-6d3c3852b549';
+
+    protected static $errorNames = array(
+        self::NOT_BLANK_ERROR => 'NOT_BLANK_ERROR',
+    );
+
     public $message = 'This value should be blank.';
 }
diff --git a/vendor/symfony/validator/Constraints/BlankValidator.php b/vendor/symfony/validator/Constraints/BlankValidator.php
index de4b49b..4b9fd3d 100644
--- a/vendor/symfony/validator/Constraints/BlankValidator.php
+++ b/vendor/symfony/validator/Constraints/BlankValidator.php
@@ -34,10 +34,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Blank::NOT_BLANK_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Blank::NOT_BLANK_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/CardScheme.php b/vendor/symfony/validator/Constraints/CardScheme.php
index 14f3b5d..40c32e8 100644
--- a/vendor/symfony/validator/Constraints/CardScheme.php
+++ b/vendor/symfony/validator/Constraints/CardScheme.php
@@ -24,8 +24,8 @@
  */
 class CardScheme extends Constraint
 {
-    const NOT_NUMERIC_ERROR = 1;
-    const INVALID_FORMAT_ERROR = 2;
+    const NOT_NUMERIC_ERROR = 'a2ad9231-e827-485f-8a1e-ef4d9a6d5c2e';
+    const INVALID_FORMAT_ERROR = 'a8faedbf-1c2f-4695-8d22-55783be8efed';
 
     protected static $errorNames = array(
         self::NOT_NUMERIC_ERROR => 'NOT_NUMERIC_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Choice.php b/vendor/symfony/validator/Constraints/Choice.php
index 4e2c8e7..4b93c70 100644
--- a/vendor/symfony/validator/Constraints/Choice.php
+++ b/vendor/symfony/validator/Constraints/Choice.php
@@ -21,9 +21,9 @@
  */
 class Choice extends Constraint
 {
-    const NO_SUCH_CHOICE_ERROR = 1;
-    const TOO_FEW_ERROR = 2;
-    const TOO_MANY_ERROR = 3;
+    const NO_SUCH_CHOICE_ERROR = '8e179f1b-97aa-4560-a02f-2a8b42e49df7';
+    const TOO_FEW_ERROR = '11edd7eb-5872-4b6e-9f12-89923999fd0e';
+    const TOO_MANY_ERROR = '9bd98e49-211c-433f-8630-fd1c2d0f08c3';
 
     protected static $errorNames = array(
         self::NO_SUCH_CHOICE_ERROR => 'NO_SUCH_CHOICE_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Collection.php b/vendor/symfony/validator/Constraints/Collection.php
index ae55366..ac1edd3 100644
--- a/vendor/symfony/validator/Constraints/Collection.php
+++ b/vendor/symfony/validator/Constraints/Collection.php
@@ -21,8 +21,8 @@
  */
 class Collection extends Composite
 {
-    const MISSING_FIELD_ERROR = 1;
-    const NO_SUCH_FIELD_ERROR = 2;
+    const MISSING_FIELD_ERROR = '2fa2158c-2a7f-484b-98aa-975522539ff8';
+    const NO_SUCH_FIELD_ERROR = '7703c766-b5d5-4cef-ace7-ae0dd82304e9';
 
     protected static $errorNames = array(
         self::MISSING_FIELD_ERROR => 'MISSING_FIELD_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Count.php b/vendor/symfony/validator/Constraints/Count.php
index 3378227..53870fb 100644
--- a/vendor/symfony/validator/Constraints/Count.php
+++ b/vendor/symfony/validator/Constraints/Count.php
@@ -22,8 +22,8 @@
  */
 class Count extends Constraint
 {
-    const TOO_FEW_ERROR = 1;
-    const TOO_MANY_ERROR = 2;
+    const TOO_FEW_ERROR = 'bef8e338-6ae5-4caf-b8e2-50e7b0579e69';
+    const TOO_MANY_ERROR = '756b1212-697c-468d-a9ad-50dd783bb169';
 
     protected static $errorNames = array(
         self::TOO_FEW_ERROR => 'TOO_FEW_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Country.php b/vendor/symfony/validator/Constraints/Country.php
index d1df3a8..1b76570 100644
--- a/vendor/symfony/validator/Constraints/Country.php
+++ b/vendor/symfony/validator/Constraints/Country.php
@@ -21,5 +21,11 @@
  */
 class Country extends Constraint
 {
+    const NO_SUCH_COUNTRY_ERROR = '8f900c12-61bd-455d-9398-996cd040f7f0';
+
+    protected static $errorNames = array(
+        self::NO_SUCH_COUNTRY_ERROR => 'NO_SUCH_COUNTRY_ERROR',
+    );
+
     public $message = 'This value is not a valid country.';
 }
diff --git a/vendor/symfony/validator/Constraints/CountryValidator.php b/vendor/symfony/validator/Constraints/CountryValidator.php
index 22b7909..138d775 100644
--- a/vendor/symfony/validator/Constraints/CountryValidator.php
+++ b/vendor/symfony/validator/Constraints/CountryValidator.php
@@ -48,10 +48,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Country::NO_SUCH_COUNTRY_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Country::NO_SUCH_COUNTRY_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Currency.php b/vendor/symfony/validator/Constraints/Currency.php
index 736af83..d28f94c 100644
--- a/vendor/symfony/validator/Constraints/Currency.php
+++ b/vendor/symfony/validator/Constraints/Currency.php
@@ -18,8 +18,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Miha Vrhovnik <miha.vrhovnik@pagein.si>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class Currency extends Constraint
 {
+    const NO_SUCH_CURRENCY_ERROR = '69945ac1-2db4-405f-bec7-d2772f73df52';
+
+    protected static $errorNames = array(
+        self::NO_SUCH_CURRENCY_ERROR => 'NO_SUCH_CURRENCY_ERROR',
+    );
+
     public $message = 'This value is not a valid currency.';
 }
diff --git a/vendor/symfony/validator/Constraints/CurrencyValidator.php b/vendor/symfony/validator/Constraints/CurrencyValidator.php
index 4fa91d5..043bafa 100644
--- a/vendor/symfony/validator/Constraints/CurrencyValidator.php
+++ b/vendor/symfony/validator/Constraints/CurrencyValidator.php
@@ -21,6 +21,7 @@
  * Validates whether a value is a valid currency.
  *
  * @author Miha Vrhovnik <miha.vrhovnik@pagein.si>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class CurrencyValidator extends ConstraintValidator
 {
@@ -48,10 +49,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Currency::NO_SUCH_CURRENCY_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Currency::NO_SUCH_CURRENCY_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Date.php b/vendor/symfony/validator/Constraints/Date.php
index 1001d78..2563413 100644
--- a/vendor/symfony/validator/Constraints/Date.php
+++ b/vendor/symfony/validator/Constraints/Date.php
@@ -21,8 +21,8 @@
  */
 class Date extends Constraint
 {
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_DATE_ERROR = 2;
+    const INVALID_FORMAT_ERROR = '69819696-02ac-4a99-9ff0-14e127c4d1bc';
+    const INVALID_DATE_ERROR = '3c184ce5-b31d-4de7-8b76-326da7b2be93';
 
     protected static $errorNames = array(
         self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/DateTime.php b/vendor/symfony/validator/Constraints/DateTime.php
index a71bbbd..35e2934 100644
--- a/vendor/symfony/validator/Constraints/DateTime.php
+++ b/vendor/symfony/validator/Constraints/DateTime.php
@@ -21,9 +21,9 @@
  */
 class DateTime extends Constraint
 {
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_DATE_ERROR = 2;
-    const INVALID_TIME_ERROR = 3;
+    const INVALID_FORMAT_ERROR = '1a9da513-2640-4f84-9b6a-4d99dcddc628';
+    const INVALID_DATE_ERROR = 'd52afa47-620d-4d99-9f08-f4d85b36e33c';
+    const INVALID_TIME_ERROR = '5e797c9d-74f7-4098-baa3-94390c447b27';
 
     protected static $errorNames = array(
         self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Email.php b/vendor/symfony/validator/Constraints/Email.php
index 96abf2c..a9d9ab1 100644
--- a/vendor/symfony/validator/Constraints/Email.php
+++ b/vendor/symfony/validator/Constraints/Email.php
@@ -21,9 +21,9 @@
  */
 class Email extends Constraint
 {
-    const INVALID_FORMAT_ERROR = 1;
-    const MX_CHECK_FAILED_ERROR = 2;
-    const HOST_CHECK_FAILED_ERROR = 3;
+    const INVALID_FORMAT_ERROR = 'bd79c0ab-ddba-46cc-a703-a7a4b08de310';
+    const MX_CHECK_FAILED_ERROR = 'bf447c1c-0266-4e10-9c6c-573df282e413';
+    const HOST_CHECK_FAILED_ERROR = '7da53a8b-56f3-4288-bb3e-ee9ede4ef9a1';
 
     protected static $errorNames = array(
         self::INVALID_FORMAT_ERROR => 'STRICT_CHECK_FAILED_ERROR',
diff --git a/vendor/symfony/validator/Constraints/EqualTo.php b/vendor/symfony/validator/Constraints/EqualTo.php
index 8d3d752..4b22c6d 100644
--- a/vendor/symfony/validator/Constraints/EqualTo.php
+++ b/vendor/symfony/validator/Constraints/EqualTo.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class EqualTo extends AbstractComparison
 {
+    const NOT_EQUAL_ERROR = '478618a7-95ba-473d-9101-cabd45e49115';
+
+    protected static $errorNames = array(
+        self::NOT_EQUAL_ERROR => 'NOT_EQUAL_ERROR',
+    );
+
     public $message = 'This value should be equal to {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/EqualToValidator.php b/vendor/symfony/validator/Constraints/EqualToValidator.php
index 3739dbe..fe1f362 100644
--- a/vendor/symfony/validator/Constraints/EqualToValidator.php
+++ b/vendor/symfony/validator/Constraints/EqualToValidator.php
@@ -15,6 +15,7 @@
  * Validates values are equal (==).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class EqualToValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 == $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return EqualTo::NOT_EQUAL_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/Expression.php b/vendor/symfony/validator/Constraints/Expression.php
index dfa242c..3329bd2 100644
--- a/vendor/symfony/validator/Constraints/Expression.php
+++ b/vendor/symfony/validator/Constraints/Expression.php
@@ -22,6 +22,12 @@
  */
 class Expression extends Constraint
 {
+    const EXPRESSION_FAILED_ERROR = '6b3befbc-2f01-4ddf-be21-b57898905284';
+
+    protected static $errorNames = array(
+        self::EXPRESSION_FAILED_ERROR => 'EXPRESSION_FAILED_ERROR',
+    );
+
     public $message = 'This value is not valid.';
     public $expression;
 
diff --git a/vendor/symfony/validator/Constraints/ExpressionValidator.php b/vendor/symfony/validator/Constraints/ExpressionValidator.php
index 15d51f9..8cc289b 100644
--- a/vendor/symfony/validator/Constraints/ExpressionValidator.php
+++ b/vendor/symfony/validator/Constraints/ExpressionValidator.php
@@ -37,18 +37,10 @@ class ExpressionValidator extends ConstraintValidator
      */
     private $expressionLanguage;
 
-    /**
-     * @param PropertyAccessorInterface|null $propertyAccessor Optional as of Symfony 2.5
-     *
-     * @throws UnexpectedTypeException If the property accessor is invalid
-     */
-    public function __construct($propertyAccessor = null)
+    public function __construct(PropertyAccessorInterface $propertyAccessor = null, ExpressionLanguage $expressionLanguage = null)
     {
-        if (null !== $propertyAccessor && !$propertyAccessor instanceof PropertyAccessorInterface) {
-            throw new UnexpectedTypeException($propertyAccessor, 'null or \Symfony\Component\PropertyAccess\PropertyAccessorInterface');
-        }
-
         $this->propertyAccessor = $propertyAccessor;
+        $this->expressionLanguage = $expressionLanguage;
     }
 
     /**
@@ -88,10 +80,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Expression::EXPRESSION_FAILED_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Expression::EXPRESSION_FAILED_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/File.php b/vendor/symfony/validator/Constraints/File.php
index de9fc00..24c7495 100644
--- a/vendor/symfony/validator/Constraints/File.php
+++ b/vendor/symfony/validator/Constraints/File.php
@@ -24,11 +24,11 @@ class File extends Constraint
 {
     // Check the Image constraint for clashes if adding new constants here
 
-    const NOT_FOUND_ERROR = 1;
-    const NOT_READABLE_ERROR = 2;
-    const EMPTY_ERROR = 3;
-    const TOO_LARGE_ERROR = 4;
-    const INVALID_MIME_TYPE_ERROR = 5;
+    const NOT_FOUND_ERROR = 'd2a3fb6e-7ddc-4210-8fbf-2ab345ce1998';
+    const NOT_READABLE_ERROR = 'c20c92a4-5bfa-4202-9477-28e800e0f6ff';
+    const EMPTY_ERROR = '5d743385-9775-4aa5-8ff5-495fb1e60137';
+    const TOO_LARGE_ERROR = 'df8637af-d466-48c6-a59d-e7126250a654';
+    const INVALID_MIME_TYPE_ERROR = '744f00bc-4389-4c74-92de-9a43cde55534';
 
     protected static $errorNames = array(
         self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
diff --git a/vendor/symfony/validator/Constraints/GreaterThan.php b/vendor/symfony/validator/Constraints/GreaterThan.php
index ec7fafb..c2ca2dc 100644
--- a/vendor/symfony/validator/Constraints/GreaterThan.php
+++ b/vendor/symfony/validator/Constraints/GreaterThan.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class GreaterThan extends AbstractComparison
 {
+    const TOO_LOW_ERROR = '778b7ae0-84d3-481a-9dec-35fdb64b1d78';
+
+    protected static $errorNames = array(
+        self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
+    );
+
     public $message = 'This value should be greater than {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php b/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
index 36fdd9c..9b3743d 100644
--- a/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
+++ b/vendor/symfony/validator/Constraints/GreaterThanOrEqual.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class GreaterThanOrEqual extends AbstractComparison
 {
+    const TOO_LOW_ERROR = 'ea4e51d1-3342-48bd-87f1-9e672cd90cad';
+
+    protected static $errorNames = array(
+        self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
+    );
+
     public $message = 'This value should be greater than or equal to {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php b/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
index 2363204..e196e68 100644
--- a/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
+++ b/vendor/symfony/validator/Constraints/GreaterThanOrEqualValidator.php
@@ -15,6 +15,7 @@
  * Validates values are greater than or equal to the previous (>=).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class GreaterThanOrEqualValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 >= $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return GreaterThanOrEqual::TOO_LOW_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/GreaterThanValidator.php b/vendor/symfony/validator/Constraints/GreaterThanValidator.php
index fdcf0c1..9029e8f 100644
--- a/vendor/symfony/validator/Constraints/GreaterThanValidator.php
+++ b/vendor/symfony/validator/Constraints/GreaterThanValidator.php
@@ -15,6 +15,7 @@
  * Validates values are greater than the previous (>).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class GreaterThanValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 > $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return GreaterThan::TOO_LOW_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/GroupSequenceProvider.php b/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
index 3904473..8a3fe63 100644
--- a/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
+++ b/vendor/symfony/validator/Constraints/GroupSequenceProvider.php
@@ -16,6 +16,8 @@
  *
  * @Annotation
  * @Target({"CLASS", "ANNOTATION"})
+ *
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class GroupSequenceProvider
 {
diff --git a/vendor/symfony/validator/Constraints/Iban.php b/vendor/symfony/validator/Constraints/Iban.php
index c4dc985..9c4d383 100644
--- a/vendor/symfony/validator/Constraints/Iban.php
+++ b/vendor/symfony/validator/Constraints/Iban.php
@@ -24,14 +24,14 @@
 class Iban extends Constraint
 {
     /** @deprecated, to be removed in 3.0. */
-    const TOO_SHORT_ERROR = 1;
-    const INVALID_COUNTRY_CODE_ERROR = 2;
-    const INVALID_CHARACTERS_ERROR = 3;
+    const TOO_SHORT_ERROR = '88e5e319-0aeb-4979-a27e-3d9ce0c16166';
+    const INVALID_COUNTRY_CODE_ERROR = 'de78ee2c-bd50-44e2-aec8-3d8228aeadb9';
+    const INVALID_CHARACTERS_ERROR = '8d3d85e4-784f-4719-a5bc-d9e40d45a3a5';
     /** @deprecated, to be removed in 3.0. */
-    const INVALID_CASE_ERROR = 4;
-    const CHECKSUM_FAILED_ERROR = 5;
-    const INVALID_FORMAT_ERROR = 6;
-    const NOT_SUPPORTED_COUNTRY_CODE_ERROR = 7;
+    const INVALID_CASE_ERROR = 'f4bf62fe-03ec-42af-a53b-68e21b1e7274';
+    const CHECKSUM_FAILED_ERROR = 'b9401321-f9bf-4dcb-83c1-f31094440795';
+    const INVALID_FORMAT_ERROR = 'c8d318f1-2ecc-41ba-b983-df70d225cf5a';
+    const NOT_SUPPORTED_COUNTRY_CODE_ERROR = 'e2c259f3-4b46-48e6-b72e-891658158ec8';
 
     protected static $errorNames = array(
         self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/IdenticalTo.php b/vendor/symfony/validator/Constraints/IdenticalTo.php
index 6d00286..a7dadff 100644
--- a/vendor/symfony/validator/Constraints/IdenticalTo.php
+++ b/vendor/symfony/validator/Constraints/IdenticalTo.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class IdenticalTo extends AbstractComparison
 {
+    const NOT_IDENTICAL_ERROR = '2a8cc50f-58a2-4536-875e-060a2ce69ed5';
+
+    protected static $errorNames = array(
+        self::NOT_IDENTICAL_ERROR => 'NOT_IDENTICAL_ERROR',
+    );
+
     public $message = 'This value should be identical to {{ compared_value_type }} {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/IdenticalToValidator.php b/vendor/symfony/validator/Constraints/IdenticalToValidator.php
index a186726..304f71f 100644
--- a/vendor/symfony/validator/Constraints/IdenticalToValidator.php
+++ b/vendor/symfony/validator/Constraints/IdenticalToValidator.php
@@ -15,6 +15,7 @@
  * Validates values are identical (===).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class IdenticalToValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 === $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return IdenticalTo::NOT_IDENTICAL_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/Image.php b/vendor/symfony/validator/Constraints/Image.php
index f75c6a2..28803c4 100644
--- a/vendor/symfony/validator/Constraints/Image.php
+++ b/vendor/symfony/validator/Constraints/Image.php
@@ -20,18 +20,16 @@
  */
 class Image extends File
 {
-    // Don't reuse values used in File
-
-    const SIZE_NOT_DETECTED_ERROR = 10;
-    const TOO_WIDE_ERROR = 11;
-    const TOO_NARROW_ERROR = 12;
-    const TOO_HIGH_ERROR = 13;
-    const TOO_LOW_ERROR = 14;
-    const RATIO_TOO_BIG_ERROR = 15;
-    const RATIO_TOO_SMALL_ERROR = 16;
-    const SQUARE_NOT_ALLOWED_ERROR = 17;
-    const LANDSCAPE_NOT_ALLOWED_ERROR = 18;
-    const PORTRAIT_NOT_ALLOWED_ERROR = 19;
+    const SIZE_NOT_DETECTED_ERROR = '6d55c3f4-e58e-4fe3-91ee-74b492199956';
+    const TOO_WIDE_ERROR = '7f87163d-878f-47f5-99ba-a8eb723a1ab2';
+    const TOO_NARROW_ERROR = '9afbd561-4f90-4a27-be62-1780fc43604a';
+    const TOO_HIGH_ERROR = '7efae81c-4877-47ba-aa65-d01ccb0d4645';
+    const TOO_LOW_ERROR = 'aef0cb6a-c07f-4894-bc08-1781420d7b4c';
+    const RATIO_TOO_BIG_ERROR = '70cafca6-168f-41c9-8c8c-4e47a52be643';
+    const RATIO_TOO_SMALL_ERROR = '59b8c6ef-bcf2-4ceb-afff-4642ed92f12e';
+    const SQUARE_NOT_ALLOWED_ERROR = '5d41425b-facb-47f7-a55a-de9fbe45cb46';
+    const LANDSCAPE_NOT_ALLOWED_ERROR = '6f895685-7cf2-4d65-b3da-9029c5581d88';
+    const PORTRAIT_NOT_ALLOWED_ERROR = '65608156-77da-4c79-a88c-02ef6d18c782';
 
     // Include the mapping from the base class
 
diff --git a/vendor/symfony/validator/Constraints/Ip.php b/vendor/symfony/validator/Constraints/Ip.php
index 8096502..36772c6 100644
--- a/vendor/symfony/validator/Constraints/Ip.php
+++ b/vendor/symfony/validator/Constraints/Ip.php
@@ -44,6 +44,8 @@ class Ip extends Constraint
     const V6_ONLY_PUBLIC = '6_public';
     const ALL_ONLY_PUBLIC = 'all_public';
 
+    const INVALID_IP_ERROR = 'b1b427ae-9f6f-41b0-aa9b-84511fbb3c5b';
+
     protected static $versions = array(
         self::V4,
         self::V6,
@@ -62,6 +64,10 @@ class Ip extends Constraint
         self::ALL_ONLY_PUBLIC,
     );
 
+    protected static $errorNames = array(
+        self::INVALID_IP_ERROR => 'INVALID_IP_ERROR',
+    );
+
     public $version = self::V4;
 
     public $message = 'This is not a valid IP address.';
diff --git a/vendor/symfony/validator/Constraints/IpValidator.php b/vendor/symfony/validator/Constraints/IpValidator.php
index 0b17cf7..eb8642b 100644
--- a/vendor/symfony/validator/Constraints/IpValidator.php
+++ b/vendor/symfony/validator/Constraints/IpValidator.php
@@ -97,10 +97,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Ip::INVALID_IP_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Ip::INVALID_IP_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/IsFalse.php b/vendor/symfony/validator/Constraints/IsFalse.php
index 71a0ed6..8332e18 100644
--- a/vendor/symfony/validator/Constraints/IsFalse.php
+++ b/vendor/symfony/validator/Constraints/IsFalse.php
@@ -21,5 +21,11 @@
  */
 class IsFalse extends Constraint
 {
+    const NOT_FALSE_ERROR = 'd53a91b0-def3-426a-83d7-269da7ab4200';
+
+    protected static $errorNames = array(
+        self::NOT_FALSE_ERROR => 'NOT_FALSE_ERROR',
+    );
+
     public $message = 'This value should be false.';
 }
diff --git a/vendor/symfony/validator/Constraints/IsFalseValidator.php b/vendor/symfony/validator/Constraints/IsFalseValidator.php
index b78163b..522a1a2 100644
--- a/vendor/symfony/validator/Constraints/IsFalseValidator.php
+++ b/vendor/symfony/validator/Constraints/IsFalseValidator.php
@@ -37,10 +37,12 @@ public function validate($value, Constraint $constraint)
         if ($this->context instanceof ExecutionContextInterface) {
             $this->context->buildViolation($constraint->message)
                 ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(IsFalse::NOT_FALSE_ERROR)
                 ->addViolation();
         } else {
             $this->buildViolation($constraint->message)
                 ->setParameter('{{ value }}', $this->formatValue($value))
+                ->setCode(IsFalse::NOT_FALSE_ERROR)
                 ->addViolation();
         }
     }
diff --git a/vendor/symfony/validator/Constraints/IsNull.php b/vendor/symfony/validator/Constraints/IsNull.php
index 64e837a..fdd2930 100644
--- a/vendor/symfony/validator/Constraints/IsNull.php
+++ b/vendor/symfony/validator/Constraints/IsNull.php
@@ -21,5 +21,11 @@
  */
 class IsNull extends Constraint
 {
+    const NOT_NULL_ERROR = '60d2f30b-8cfa-4372-b155-9656634de120';
+
+    protected static $errorNames = array(
+        self::NOT_NULL_ERROR => 'NOT_NULL_ERROR',
+    );
+
     public $message = 'This value should be null.';
 }
diff --git a/vendor/symfony/validator/Constraints/IsNullValidator.php b/vendor/symfony/validator/Constraints/IsNullValidator.php
index 5615121..1b7567f 100644
--- a/vendor/symfony/validator/Constraints/IsNullValidator.php
+++ b/vendor/symfony/validator/Constraints/IsNullValidator.php
@@ -34,10 +34,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(IsNull::NOT_NULL_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(IsNull::NOT_NULL_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/IsTrue.php b/vendor/symfony/validator/Constraints/IsTrue.php
index 653135b..405a96a 100644
--- a/vendor/symfony/validator/Constraints/IsTrue.php
+++ b/vendor/symfony/validator/Constraints/IsTrue.php
@@ -21,5 +21,11 @@
  */
 class IsTrue extends Constraint
 {
+    const NOT_TRUE_ERROR = '2beabf1c-54c0-4882-a928-05249b26e23b';
+
+    protected static $errorNames = array(
+        self::NOT_TRUE_ERROR => 'NOT_TRUE_ERROR',
+    );
+
     public $message = 'This value should be true.';
 }
diff --git a/vendor/symfony/validator/Constraints/IsTrueValidator.php b/vendor/symfony/validator/Constraints/IsTrueValidator.php
index 2882dd6..e1ca56e 100644
--- a/vendor/symfony/validator/Constraints/IsTrueValidator.php
+++ b/vendor/symfony/validator/Constraints/IsTrueValidator.php
@@ -38,10 +38,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(IsTrue::NOT_TRUE_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(IsTrue::NOT_TRUE_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Isbn.php b/vendor/symfony/validator/Constraints/Isbn.php
index 3878c84..f1e83b9 100644
--- a/vendor/symfony/validator/Constraints/Isbn.php
+++ b/vendor/symfony/validator/Constraints/Isbn.php
@@ -23,11 +23,11 @@
  */
 class Isbn extends Constraint
 {
-    const TOO_SHORT_ERROR = 1;
-    const TOO_LONG_ERROR = 2;
-    const INVALID_CHARACTERS_ERROR = 3;
-    const CHECKSUM_FAILED_ERROR = 4;
-    const TYPE_NOT_RECOGNIZED_ERROR = 5;
+    const TOO_SHORT_ERROR = '949acbb0-8ef5-43ed-a0e9-032dfd08ae45';
+    const TOO_LONG_ERROR = '3171387d-f80a-47b3-bd6e-60598545316a';
+    const INVALID_CHARACTERS_ERROR = '23d21cea-da99-453d-98b1-a7d916fbb339';
+    const CHECKSUM_FAILED_ERROR = '2881c032-660f-46b6-8153-d352d9706640';
+    const TYPE_NOT_RECOGNIZED_ERROR = 'fa54a457-f042-441f-89c4-066ee5bdd3e1';
 
     protected static $errorNames = array(
         self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Issn.php b/vendor/symfony/validator/Constraints/Issn.php
index 39716a2..a2fecdd 100644
--- a/vendor/symfony/validator/Constraints/Issn.php
+++ b/vendor/symfony/validator/Constraints/Issn.php
@@ -22,12 +22,12 @@
  */
 class Issn extends Constraint
 {
-    const TOO_SHORT_ERROR = 1;
-    const TOO_LONG_ERROR = 2;
-    const MISSING_HYPHEN_ERROR = 3;
-    const INVALID_CHARACTERS_ERROR = 4;
-    const INVALID_CASE_ERROR = 5;
-    const CHECKSUM_FAILED_ERROR = 6;
+    const TOO_SHORT_ERROR = '6a20dd3d-f463-4460-8e7b-18a1b98abbfb';
+    const TOO_LONG_ERROR = '37cef893-5871-464e-8b12-7fb79324833c';
+    const MISSING_HYPHEN_ERROR = '2983286f-8134-4693-957a-1ec4ef887b15';
+    const INVALID_CHARACTERS_ERROR = 'a663d266-37c2-4ece-a914-ae891940c588';
+    const INVALID_CASE_ERROR = '7b6dd393-7523-4a6c-b84d-72b91bba5e1a';
+    const CHECKSUM_FAILED_ERROR = 'b0f92dbc-667c-48de-b526-ad9586d43e85';
 
     protected static $errorNames = array(
         self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Language.php b/vendor/symfony/validator/Constraints/Language.php
index c6f513c..0e676b7 100644
--- a/vendor/symfony/validator/Constraints/Language.php
+++ b/vendor/symfony/validator/Constraints/Language.php
@@ -21,5 +21,11 @@
  */
 class Language extends Constraint
 {
+    const NO_SUCH_LANGUAGE_ERROR = 'ee65fec4-9a20-4202-9f39-ca558cd7bdf7';
+
+    protected static $errorNames = array(
+        self::NO_SUCH_LANGUAGE_ERROR => 'NO_SUCH_LANGUAGE_ERROR',
+    );
+
     public $message = 'This value is not a valid language.';
 }
diff --git a/vendor/symfony/validator/Constraints/LanguageValidator.php b/vendor/symfony/validator/Constraints/LanguageValidator.php
index 1f514ab..19c1ba8 100644
--- a/vendor/symfony/validator/Constraints/LanguageValidator.php
+++ b/vendor/symfony/validator/Constraints/LanguageValidator.php
@@ -48,10 +48,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Language::NO_SUCH_LANGUAGE_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Language::NO_SUCH_LANGUAGE_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Length.php b/vendor/symfony/validator/Constraints/Length.php
index bca4edb..0f96508 100644
--- a/vendor/symfony/validator/Constraints/Length.php
+++ b/vendor/symfony/validator/Constraints/Length.php
@@ -22,12 +22,14 @@
  */
 class Length extends Constraint
 {
-    const TOO_SHORT_ERROR = 1;
-    const TOO_LONG_ERROR = 2;
+    const TOO_SHORT_ERROR = '9ff3fdc4-b214-49db-8718-39c315e33d45';
+    const TOO_LONG_ERROR = 'd94b19cc-114f-4f44-9cc4-4138e80a87b9';
+    const INVALID_CHARACTERS_ERROR = '35e6a710-aa2e-4719-b58e-24b35749b767';
 
     protected static $errorNames = array(
         self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
         self::TOO_LONG_ERROR => 'TOO_LONG_ERROR',
+        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
     );
 
     public $maxMessage = 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.';
diff --git a/vendor/symfony/validator/Constraints/LengthValidator.php b/vendor/symfony/validator/Constraints/LengthValidator.php
index d340749..9737495 100644
--- a/vendor/symfony/validator/Constraints/LengthValidator.php
+++ b/vendor/symfony/validator/Constraints/LengthValidator.php
@@ -42,29 +42,11 @@ public function validate($value, Constraint $constraint)
         $invalidCharset = false;
 
         if ('UTF8' === $charset = strtoupper($constraint->charset)) {
-            $charset = 'UTF-8';
+            $charset = 'UTF-8'; // iconv on Windows requires "UTF-8" instead of "UTF8"
         }
 
-        if ('UTF-8' === $charset) {
-            if (!preg_match('//u', $stringValue)) {
-                $invalidCharset = true;
-            } elseif (function_exists('utf8_decode')) {
-                $length = strlen(utf8_decode($stringValue));
-            } else {
-                preg_replace('/./u', '', $stringValue, -1, $length);
-            }
-        } elseif (function_exists('mb_strlen')) {
-            if (@mb_check_encoding($stringValue, $constraint->charset)) {
-                $length = mb_strlen($stringValue, $constraint->charset);
-            } else {
-                $invalidCharset = true;
-            }
-        } elseif (function_exists('iconv_strlen')) {
-            $length = @iconv_strlen($stringValue, $constraint->charset);
-            $invalidCharset = false === $length;
-        } else {
-            $length = strlen($stringValue);
-        }
+        $length = @iconv_strlen($stringValue, $charset);
+        $invalidCharset = false === $length;
 
         if ($invalidCharset) {
             if ($this->context instanceof ExecutionContextInterface) {
@@ -72,12 +54,14 @@ public function validate($value, Constraint $constraint)
                     ->setParameter('{{ value }}', $this->formatValue($stringValue))
                     ->setParameter('{{ charset }}', $constraint->charset)
                     ->setInvalidValue($value)
+                    ->setCode(Length::INVALID_CHARACTERS_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->charsetMessage)
                     ->setParameter('{{ value }}', $this->formatValue($stringValue))
                     ->setParameter('{{ charset }}', $constraint->charset)
                     ->setInvalidValue($value)
+                    ->setCode(Length::INVALID_CHARACTERS_ERROR)
                     ->addViolation();
             }
 
diff --git a/vendor/symfony/validator/Constraints/LessThan.php b/vendor/symfony/validator/Constraints/LessThan.php
index b116320..1bbb508 100644
--- a/vendor/symfony/validator/Constraints/LessThan.php
+++ b/vendor/symfony/validator/Constraints/LessThan.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class LessThan extends AbstractComparison
 {
+    const TOO_HIGH_ERROR = '079d7420-2d13-460c-8756-de810eeb37d2';
+
+    protected static $errorNames = array(
+        self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
+    );
+
     public $message = 'This value should be less than {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/LessThanOrEqual.php b/vendor/symfony/validator/Constraints/LessThanOrEqual.php
index 7faca84..d118942 100644
--- a/vendor/symfony/validator/Constraints/LessThanOrEqual.php
+++ b/vendor/symfony/validator/Constraints/LessThanOrEqual.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class LessThanOrEqual extends AbstractComparison
 {
+    const TOO_HIGH_ERROR = '079d7420-2d13-460c-8756-de810eeb37d2';
+
+    protected static $errorNames = array(
+        self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
+    );
+
     public $message = 'This value should be less than or equal to {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php b/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
index dcc93b2..54281ee 100644
--- a/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
+++ b/vendor/symfony/validator/Constraints/LessThanOrEqualValidator.php
@@ -15,6 +15,7 @@
  * Validates values are less than or equal to the previous (<=).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class LessThanOrEqualValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 <= $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return LessThanOrEqual::TOO_HIGH_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/LessThanValidator.php b/vendor/symfony/validator/Constraints/LessThanValidator.php
index 081316a..ef7535f 100644
--- a/vendor/symfony/validator/Constraints/LessThanValidator.php
+++ b/vendor/symfony/validator/Constraints/LessThanValidator.php
@@ -15,6 +15,7 @@
  * Validates values are less than the previous (<).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class LessThanValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 < $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return LessThan::TOO_HIGH_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/Locale.php b/vendor/symfony/validator/Constraints/Locale.php
index cf30eb2..5aa7070 100644
--- a/vendor/symfony/validator/Constraints/Locale.php
+++ b/vendor/symfony/validator/Constraints/Locale.php
@@ -21,5 +21,11 @@
  */
 class Locale extends Constraint
 {
+    const NO_SUCH_LOCALE_ERROR = 'a0af4293-1f1a-4a1c-a328-979cba6182a2';
+
+    protected static $errorNames = array(
+        self::NO_SUCH_LOCALE_ERROR => 'NO_SUCH_LOCALE_ERROR',
+    );
+
     public $message = 'This value is not a valid locale.';
 }
diff --git a/vendor/symfony/validator/Constraints/LocaleValidator.php b/vendor/symfony/validator/Constraints/LocaleValidator.php
index 038a1a4..aa4a99f 100644
--- a/vendor/symfony/validator/Constraints/LocaleValidator.php
+++ b/vendor/symfony/validator/Constraints/LocaleValidator.php
@@ -48,10 +48,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Locale::NO_SUCH_LOCALE_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Locale::NO_SUCH_LOCALE_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Luhn.php b/vendor/symfony/validator/Constraints/Luhn.php
index 24f5bc7..67f152d 100644
--- a/vendor/symfony/validator/Constraints/Luhn.php
+++ b/vendor/symfony/validator/Constraints/Luhn.php
@@ -25,8 +25,8 @@
  */
 class Luhn extends Constraint
 {
-    const INVALID_CHARACTERS_ERROR = 1;
-    const CHECKSUM_FAILED_ERROR = 2;
+    const INVALID_CHARACTERS_ERROR = 'dfad6d23-1b74-4374-929b-5cbb56fc0d9e';
+    const CHECKSUM_FAILED_ERROR = '4d760774-3f50-4cd5-a6d5-b10a3299d8d3';
 
     protected static $errorNames = array(
         self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
diff --git a/vendor/symfony/validator/Constraints/NotBlank.php b/vendor/symfony/validator/Constraints/NotBlank.php
index 750f412..e059f10 100644
--- a/vendor/symfony/validator/Constraints/NotBlank.php
+++ b/vendor/symfony/validator/Constraints/NotBlank.php
@@ -21,5 +21,11 @@
  */
 class NotBlank extends Constraint
 {
+    const IS_BLANK_ERROR = 'c1051bb4-d103-4f74-8988-acbcafc7fdc3';
+
+    protected static $errorNames = array(
+        self::IS_BLANK_ERROR => 'IS_BLANK_ERROR',
+    );
+
     public $message = 'This value should not be blank.';
 }
diff --git a/vendor/symfony/validator/Constraints/NotBlankValidator.php b/vendor/symfony/validator/Constraints/NotBlankValidator.php
index f0d4f21..7ea5f1f 100644
--- a/vendor/symfony/validator/Constraints/NotBlankValidator.php
+++ b/vendor/symfony/validator/Constraints/NotBlankValidator.php
@@ -34,10 +34,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(NotBlank::IS_BLANK_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(NotBlank::IS_BLANK_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/NotEqualTo.php b/vendor/symfony/validator/Constraints/NotEqualTo.php
index abd8092..8c5abdd 100644
--- a/vendor/symfony/validator/Constraints/NotEqualTo.php
+++ b/vendor/symfony/validator/Constraints/NotEqualTo.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class NotEqualTo extends AbstractComparison
 {
+    const IS_EQUAL_ERROR = 'aa2e33da-25c8-4d76-8c6c-812f02ea89dd';
+
+    protected static $errorNames = array(
+        self::IS_EQUAL_ERROR => 'IS_EQUAL_ERROR',
+    );
+
     public $message = 'This value should not be equal to {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/NotEqualToValidator.php b/vendor/symfony/validator/Constraints/NotEqualToValidator.php
index 5710a85..b80c5ea 100644
--- a/vendor/symfony/validator/Constraints/NotEqualToValidator.php
+++ b/vendor/symfony/validator/Constraints/NotEqualToValidator.php
@@ -15,6 +15,7 @@
  * Validates values are all unequal (!=).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class NotEqualToValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 != $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return NotEqualTo::IS_EQUAL_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/NotIdenticalTo.php b/vendor/symfony/validator/Constraints/NotIdenticalTo.php
index fb4ef3f..4c9c63e 100644
--- a/vendor/symfony/validator/Constraints/NotIdenticalTo.php
+++ b/vendor/symfony/validator/Constraints/NotIdenticalTo.php
@@ -16,8 +16,15 @@
  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class NotIdenticalTo extends AbstractComparison
 {
+    const IS_IDENTICAL_ERROR = '4aaac518-0dda-4129-a6d9-e216b9b454a0';
+
+    protected static $errorNames = array(
+        self::IS_IDENTICAL_ERROR => 'IS_IDENTICAL_ERROR',
+    );
+
     public $message = 'This value should not be identical to {{ compared_value_type }} {{ compared_value }}.';
 }
diff --git a/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php b/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
index ed8dc1c..3ea8b5a 100644
--- a/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
+++ b/vendor/symfony/validator/Constraints/NotIdenticalToValidator.php
@@ -15,6 +15,7 @@
  * Validates values aren't identical (!==).
  *
  * @author Daniel Holmes <daniel@danielholmes.org>
+ * @author Bernhard Schussek <bschussek@gmail.com>
  */
 class NotIdenticalToValidator extends AbstractComparisonValidator
 {
@@ -25,4 +26,12 @@ protected function compareValues($value1, $value2)
     {
         return $value1 !== $value2;
     }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getErrorCode()
+    {
+        return NotIdenticalTo::IS_IDENTICAL_ERROR;
+    }
 }
diff --git a/vendor/symfony/validator/Constraints/NotNull.php b/vendor/symfony/validator/Constraints/NotNull.php
index 57f2492..1cfc1c8 100644
--- a/vendor/symfony/validator/Constraints/NotNull.php
+++ b/vendor/symfony/validator/Constraints/NotNull.php
@@ -21,5 +21,11 @@
  */
 class NotNull extends Constraint
 {
+    const IS_NULL_ERROR = 'ad32d13f-c3d4-423b-909a-857b961eb720';
+
+    protected static $errorNames = array(
+        self::IS_NULL_ERROR => 'IS_NULL_ERROR',
+    );
+
     public $message = 'This value should not be null.';
 }
diff --git a/vendor/symfony/validator/Constraints/NotNullValidator.php b/vendor/symfony/validator/Constraints/NotNullValidator.php
index 88ffb98..0402b3d 100644
--- a/vendor/symfony/validator/Constraints/NotNullValidator.php
+++ b/vendor/symfony/validator/Constraints/NotNullValidator.php
@@ -13,6 +13,7 @@
 
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\ConstraintValidator;
+use Symfony\Component\Validator\Context\ExecutionContextInterface;
 use Symfony\Component\Validator\Exception\UnexpectedTypeException;
 
 /**
@@ -30,7 +31,17 @@ public function validate($value, Constraint $constraint)
         }
 
         if (null === $value) {
-            $this->context->addViolation($constraint->message);
+            if ($this->context instanceof ExecutionContextInterface) {
+                $this->context->buildViolation($constraint->message)
+                    ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(NotNull::IS_NULL_ERROR)
+                    ->addViolation();
+            } else {
+                $this->buildViolation($constraint->message)
+                    ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(NotNull::IS_NULL_ERROR)
+                    ->addViolation();
+            }
         }
     }
 }
diff --git a/vendor/symfony/validator/Constraints/Range.php b/vendor/symfony/validator/Constraints/Range.php
index c59c50c..bf050ac 100644
--- a/vendor/symfony/validator/Constraints/Range.php
+++ b/vendor/symfony/validator/Constraints/Range.php
@@ -22,14 +22,32 @@
  */
 class Range extends Constraint
 {
-    const INVALID_VALUE_ERROR = 1;
-    const BEYOND_RANGE_ERROR = 2;
-    const BELOW_RANGE_ERROR = 3;
+    const INVALID_CHARACTERS_ERROR = 'ad9a9798-7a99-4df7-8ce9-46e416a1e60b';
+    const TOO_HIGH_ERROR = '2d28afcb-e32e-45fb-a815-01c431a86a69';
+    const TOO_LOW_ERROR = '76454e69-502c-46c5-9643-f447d837c4d5';
+
+    /**
+     * @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
+     *             {@link INVALID_CHARACTERS_ERROR} instead.
+     */
+    const INVALID_VALUE_ERROR = self::INVALID_CHARACTERS_ERROR;
+
+    /**
+     * @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
+     *             {@link TOO_HIGH_ERROR} instead.
+     */
+    const BEYOND_RANGE_ERROR = self::TOO_HIGH_ERROR;
+
+    /**
+     * @deprecated Deprecated since version 2.8, to be removed in 3.0. Use
+     *             {@link TOO_LOW_ERROR} instead.
+     */
+    const BELOW_RANGE_ERROR = self::TOO_LOW_ERROR;
 
     protected static $errorNames = array(
-        self::INVALID_VALUE_ERROR => 'INVALID_VALUE_ERROR',
-        self::BEYOND_RANGE_ERROR => 'BEYOND_RANGE_ERROR',
-        self::BELOW_RANGE_ERROR => 'BELOW_RANGE_ERROR',
+        self::INVALID_CHARACTERS_ERROR => 'INVALID_CHARACTERS_ERROR',
+        self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
+        self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
     );
 
     public $minMessage = 'This value should be {{ limit }} or more.';
diff --git a/vendor/symfony/validator/Constraints/RangeValidator.php b/vendor/symfony/validator/Constraints/RangeValidator.php
index 8f5fdda..05ef3b4 100644
--- a/vendor/symfony/validator/Constraints/RangeValidator.php
+++ b/vendor/symfony/validator/Constraints/RangeValidator.php
@@ -38,12 +38,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->invalidMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
-                    ->setCode(Range::INVALID_VALUE_ERROR)
+                    ->setCode(Range::INVALID_CHARACTERS_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->invalidMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
-                    ->setCode(Range::INVALID_VALUE_ERROR)
+                    ->setCode(Range::INVALID_CHARACTERS_ERROR)
                     ->addViolation();
             }
 
@@ -72,13 +72,13 @@ public function validate($value, Constraint $constraint)
                 $this->context->buildViolation($constraint->maxMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
                     ->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE))
-                    ->setCode(Range::BEYOND_RANGE_ERROR)
+                    ->setCode(Range::TOO_HIGH_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->maxMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
                     ->setParameter('{{ limit }}', $this->formatValue($max, self::PRETTY_DATE))
-                    ->setCode(Range::BEYOND_RANGE_ERROR)
+                    ->setCode(Range::TOO_HIGH_ERROR)
                     ->addViolation();
             }
 
@@ -90,13 +90,13 @@ public function validate($value, Constraint $constraint)
                 $this->context->buildViolation($constraint->minMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
                     ->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE))
-                    ->setCode(Range::BELOW_RANGE_ERROR)
+                    ->setCode(Range::TOO_LOW_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->minMessage)
                     ->setParameter('{{ value }}', $this->formatValue($value, self::PRETTY_DATE))
                     ->setParameter('{{ limit }}', $this->formatValue($min, self::PRETTY_DATE))
-                    ->setCode(Range::BELOW_RANGE_ERROR)
+                    ->setCode(Range::TOO_LOW_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Regex.php b/vendor/symfony/validator/Constraints/Regex.php
index 724274a..ec2fd7d 100644
--- a/vendor/symfony/validator/Constraints/Regex.php
+++ b/vendor/symfony/validator/Constraints/Regex.php
@@ -21,6 +21,12 @@
  */
 class Regex extends Constraint
 {
+    const REGEX_FAILED_ERROR = 'de1e3db3-5ed4-4941-aae4-59f3667cc3a3';
+
+    protected static $errorNames = array(
+        self::REGEX_FAILED_ERROR => 'REGEX_FAILED_ERROR',
+    );
+
     public $message = 'This value is not valid.';
     public $pattern;
     public $htmlPattern;
diff --git a/vendor/symfony/validator/Constraints/RegexValidator.php b/vendor/symfony/validator/Constraints/RegexValidator.php
index 850d760..0aa0ed5 100644
--- a/vendor/symfony/validator/Constraints/RegexValidator.php
+++ b/vendor/symfony/validator/Constraints/RegexValidator.php
@@ -47,10 +47,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Regex::REGEX_FAILED_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Regex::REGEX_FAILED_ERROR)
                     ->addViolation();
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Time.php b/vendor/symfony/validator/Constraints/Time.php
index 1134c2e..6bd8dbd 100644
--- a/vendor/symfony/validator/Constraints/Time.php
+++ b/vendor/symfony/validator/Constraints/Time.php
@@ -21,8 +21,8 @@
  */
 class Time extends Constraint
 {
-    const INVALID_FORMAT_ERROR = 1;
-    const INVALID_TIME_ERROR = 2;
+    const INVALID_FORMAT_ERROR = '9d27b2bb-f755-4fbf-b725-39b1edbdebdf';
+    const INVALID_TIME_ERROR = '8532f9e1-84b2-4d67-8989-0818bc38533b';
 
     protected static $errorNames = array(
         self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR',
diff --git a/vendor/symfony/validator/Constraints/Type.php b/vendor/symfony/validator/Constraints/Type.php
index afe5903..e40b478 100644
--- a/vendor/symfony/validator/Constraints/Type.php
+++ b/vendor/symfony/validator/Constraints/Type.php
@@ -21,6 +21,12 @@
  */
 class Type extends Constraint
 {
+    const INVALID_TYPE_ERROR = 'ba785a8c-82cb-4283-967c-3cf342181b40';
+
+    protected static $errorNames = array(
+        self::INVALID_TYPE_ERROR => 'INVALID_TYPE_ERROR',
+    );
+
     public $message = 'This value should be of type {{ type }}.';
     public $type;
 
diff --git a/vendor/symfony/validator/Constraints/TypeValidator.php b/vendor/symfony/validator/Constraints/TypeValidator.php
index 592f122..48f7e28 100644
--- a/vendor/symfony/validator/Constraints/TypeValidator.php
+++ b/vendor/symfony/validator/Constraints/TypeValidator.php
@@ -51,11 +51,13 @@ public function validate($value, Constraint $constraint)
             $this->context->buildViolation($constraint->message)
                 ->setParameter('{{ value }}', $this->formatValue($value))
                 ->setParameter('{{ type }}', $constraint->type)
+                ->setCode(Type::INVALID_TYPE_ERROR)
                 ->addViolation();
         } else {
             $this->buildViolation($constraint->message)
                 ->setParameter('{{ value }}', $this->formatValue($value))
                 ->setParameter('{{ type }}', $constraint->type)
+                ->setCode(Type::INVALID_TYPE_ERROR)
                 ->addViolation();
         }
     }
diff --git a/vendor/symfony/validator/Constraints/Url.php b/vendor/symfony/validator/Constraints/Url.php
index 3637bc1..8453a90 100644
--- a/vendor/symfony/validator/Constraints/Url.php
+++ b/vendor/symfony/validator/Constraints/Url.php
@@ -21,6 +21,12 @@
  */
 class Url extends Constraint
 {
+    const INVALID_URL_ERROR = '57c2f299-1154-4870-89bb-ef3b1f5ad229';
+
+    protected static $errorNames = array(
+        self::INVALID_URL_ERROR => 'INVALID_URL_ERROR',
+    );
+
     public $message = 'This value is not a valid URL.';
     public $dnsMessage = 'The host could not be resolved.';
     public $protocols = array('http', 'https');
diff --git a/vendor/symfony/validator/Constraints/UrlValidator.php b/vendor/symfony/validator/Constraints/UrlValidator.php
index 1fd76a8..7497bec 100644
--- a/vendor/symfony/validator/Constraints/UrlValidator.php
+++ b/vendor/symfony/validator/Constraints/UrlValidator.php
@@ -34,7 +34,7 @@ class UrlValidator extends ConstraintValidator
                 \]  # a IPv6 address
             )
             (:[0-9]+)?                              # a port (optional)
-            (/?|/\S+|\?|\#)                         # a /, nothing, a / with something, a query or a fragment
+            (/?|/\S+|\?\S*|\#\S*)                   # a /, nothing, a / with something, a query or a fragment
         $~ixu';
 
     /**
@@ -65,10 +65,12 @@ public function validate($value, Constraint $constraint)
             if ($this->context instanceof ExecutionContextInterface) {
                 $this->context->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Url::INVALID_URL_ERROR)
                     ->addViolation();
             } else {
                 $this->buildViolation($constraint->message)
                     ->setParameter('{{ value }}', $this->formatValue($value))
+                    ->setCode(Url::INVALID_URL_ERROR)
                     ->addViolation();
             }
 
@@ -81,12 +83,14 @@ public function validate($value, Constraint $constraint)
             if (!checkdnsrr($host, 'ANY')) {
                 if ($this->context instanceof ExecutionContextInterface) {
                     $this->context->buildViolation($constraint->dnsMessage)
-                       ->setParameter('{{ value }}', $this->formatValue($host))
-                       ->addViolation();
+                        ->setParameter('{{ value }}', $this->formatValue($host))
+                        ->setCode(Url::INVALID_URL_ERROR)
+                        ->addViolation();
                 } else {
                     $this->buildViolation($constraint->dnsMessage)
-                       ->setParameter('{{ value }}', $this->formatValue($host))
-                       ->addViolation();
+                        ->setParameter('{{ value }}', $this->formatValue($host))
+                        ->setCode(Url::INVALID_URL_ERROR)
+                        ->addViolation();
                 }
             }
         }
diff --git a/vendor/symfony/validator/Constraints/Uuid.php b/vendor/symfony/validator/Constraints/Uuid.php
index 8589b95..2deecba 100644
--- a/vendor/symfony/validator/Constraints/Uuid.php
+++ b/vendor/symfony/validator/Constraints/Uuid.php
@@ -21,12 +21,12 @@
  */
 class Uuid extends Constraint
 {
-    const TOO_SHORT_ERROR = 1;
-    const TOO_LONG_ERROR = 2;
-    const INVALID_CHARACTERS_ERROR = 3;
-    const INVALID_HYPHEN_PLACEMENT_ERROR = 4;
-    const INVALID_VERSION_ERROR = 5;
-    const INVALID_VARIANT_ERROR = 6;
+    const TOO_SHORT_ERROR = 'aa314679-dac9-4f54-bf97-b2049df8f2a3';
+    const TOO_LONG_ERROR = '494897dd-36f8-4d31-8923-71a8d5f3000d';
+    const INVALID_CHARACTERS_ERROR = '51120b12-a2bc-41bf-aa53-cd73daf330d0';
+    const INVALID_HYPHEN_PLACEMENT_ERROR = '98469c83-0309-4f5d-bf95-a496dcaa869c';
+    const INVALID_VERSION_ERROR = '21ba13b4-b185-4882-ac6f-d147355987eb';
+    const INVALID_VARIANT_ERROR = '164ef693-2b9d-46de-ad7f-836201f0c2db';
 
     protected static $errorNames = array(
         self::TOO_SHORT_ERROR => 'TOO_SHORT_ERROR',
diff --git a/vendor/symfony/validator/README.md b/vendor/symfony/validator/README.md
index 4555b9a..b30db40 100644
--- a/vendor/symfony/validator/README.md
+++ b/vendor/symfony/validator/README.md
@@ -113,7 +113,7 @@ https://github.com/silexphp/Silex/blob/master/src/Silex/Provider/ValidatorServic
 
 Documentation:
 
-https://symfony.com/doc/2.7/book/validation.html
+https://symfony.com/doc/2.8/book/validation.html
 
 JSR-303 Specification:
 
diff --git a/vendor/symfony/validator/Resources/translations/validators.de.xlf b/vendor/symfony/validator/Resources/translations/validators.de.xlf
index 105f2fb..541ebaa 100644
--- a/vendor/symfony/validator/Resources/translations/validators.de.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.de.xlf
@@ -310,6 +310,10 @@
                 <source>This value does not match the expected {{ charset }} charset.</source>
                 <target>Dieser Wert entspricht nicht dem erwarteten Zeichensatz {{ charset }}.</target>
             </trans-unit>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>Dieser Wert ist kein gültiger BIC.</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
index e666c79..ec072eb 100644
--- a/vendor/symfony/validator/Resources/translations/validators.en.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.en.xlf
@@ -310,6 +310,10 @@
                 <source>This value does not match the expected {{ charset }} charset.</source>
                 <target>This value does not match the expected {{ charset }} charset.</target>
             </trans-unit>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>This is not a valid Business Identifier Code (BIC).</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
index d874573..1fa59dd 100644
--- a/vendor/symfony/validator/Resources/translations/validators.es.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.es.xlf
@@ -310,6 +310,10 @@
                 <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>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>No es un Código de Identificación Bancaria (BIC) válido.</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
index a972c02..a113a72 100644
--- a/vendor/symfony/validator/Resources/translations/validators.hu.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.hu.xlf
@@ -310,6 +310,10 @@
                 <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>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>Érvénytelen nemzetközi bankazonosító kód (BIC/SWIFT).</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
index a58f5b8..4af93fa 100644
--- a/vendor/symfony/validator/Resources/translations/validators.ja.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.ja.xlf
@@ -310,6 +310,10 @@
                 <source>This value does not match the expected {{ charset }} charset.</source>
                 <target>この値は予期される文字コード（{{ charset }}）と異なります。</target>
             </trans-unit>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>有効なSWIFTコードではありません。</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
index fe33469..371ad97 100644
--- a/vendor/symfony/validator/Resources/translations/validators.nl.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.nl.xlf
@@ -306,6 +306,10 @@
                 <source>This value does not match the expected {{ charset }} charset.</source>
                 <target>Deze waarde is niet in de verwachte tekencodering {{ charset }}.</target>
             </trans-unit>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>Dit is geen geldige bedrijfsidentificatiecode (BIC/SWIFT).</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
index 1d6875f..c40f76e 100644
--- a/vendor/symfony/validator/Resources/translations/validators.pl.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.pl.xlf
@@ -310,6 +310,10 @@
                 <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>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>Ta wartość nie jest poprawnym kodem BIC (Business Identifier Code).</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
index 4f0e7c6..834db40 100644
--- a/vendor/symfony/validator/Resources/translations/validators.sl.xlf
+++ b/vendor/symfony/validator/Resources/translations/validators.sl.xlf
@@ -310,6 +310,10 @@
                 <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>
+            <trans-unit id="81">
+                <source>This is not a valid Business Identifier Code (BIC).</source>
+                <target>To ni veljavna identifikacijska koda podjetja (BIC).</target>
+            </trans-unit>
         </body>
     </file>
 </xliff>
diff --git a/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php b/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php
index b7cc2ec..e02d61b 100644
--- a/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php
+++ b/vendor/symfony/validator/Violation/ConstraintViolationBuilderInterface.php
@@ -94,7 +94,7 @@ public function setPlural($number);
     /**
      * Sets the violation code.
      *
-     * @param int $code The violation code
+     * @param string|null $code The violation code
      *
      * @return ConstraintViolationBuilderInterface This builder
      */
diff --git a/vendor/symfony/validator/composer.json b/vendor/symfony/validator/composer.json
index c0a898a..179e8cf 100644
--- a/vendor/symfony/validator/composer.json
+++ b/vendor/symfony/validator/composer.json
@@ -17,16 +17,15 @@
     ],
     "require": {
         "php": ">=5.3.9",
-        "symfony/translation": "~2.4"
+        "symfony/translation": "~2.4|~3.0.0"
     },
     "require-dev": {
-        "doctrine/common": "~2.3",
-        "symfony/http-foundation": "~2.1",
-        "symfony/intl": "~2.4",
-        "symfony/yaml": "~2.0,>=2.0.5",
-        "symfony/config": "~2.2",
-        "symfony/property-access": "~2.3",
-        "symfony/expression-language": "~2.4",
+        "symfony/http-foundation": "~2.1|~3.0.0",
+        "symfony/intl": "~2.4|~3.0.0",
+        "symfony/yaml": "~2.0,>=2.0.5|~3.0.0",
+        "symfony/config": "~2.2|~3.0.0",
+        "symfony/property-access": "~2.3|~3.0.0",
+        "symfony/expression-language": "~2.4|~3.0.0",
         "doctrine/annotations": "~1.0",
         "doctrine/cache": "~1.0",
         "egulias/email-validator": "~1.2,>=1.2.1"
@@ -43,12 +42,15 @@
         "symfony/expression-language": "For using the 2.4 Expression validator"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Validator\\": "" }
+        "psr-4": { "Symfony\\Component\\Validator\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/validator/phpunit.xml.dist b/vendor/symfony/validator/phpunit.xml.dist
index 1bf4391..cf8c343 100644
--- a/vendor/symfony/validator/phpunit.xml.dist
+++ b/vendor/symfony/validator/phpunit.xml.dist
@@ -20,8 +20,9 @@
         <whitelist>
             <directory>./</directory>
             <exclude>
-                <directory>./vendor</directory>
+                <directory>./Resources</directory>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md
index 096cf65..f55b570 100644
--- a/vendor/symfony/yaml/CHANGELOG.md
+++ b/vendor/symfony/yaml/CHANGELOG.md
@@ -1,6 +1,26 @@
 CHANGELOG
 =========
 
+2.8.0
+-----
+
+ * Deprecated usage of a colon in an unquoted mapping value
+ * Deprecated usage of @, \`, | and > at the beginning of an unquoted string
+ * When surrounding strings with double-quotes, you must now escape `\` characters. Not
+   escaping those characters (when surrounded by double-quotes) is deprecated.
+
+   Before:
+
+   ```yml
+   class: "Foo\Var"
+   ```
+
+   After:
+
+   ```yml
+   class: "Foo\\Var"
+   ```
+
 2.1.0
 -----
 
diff --git a/vendor/symfony/yaml/Escaper.php b/vendor/symfony/yaml/Escaper.php
index ac325a2..3487a6a 100644
--- a/vendor/symfony/yaml/Escaper.php
+++ b/vendor/symfony/yaml/Escaper.php
@@ -16,6 +16,8 @@
  * YAML strings.
  *
  * @author Matthew Lewinski <matthew@lewinski.org>
+ *
+ * @internal
  */
 class Escaper
 {
diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php
index a5b53bd..65ee79e 100644
--- a/vendor/symfony/yaml/Inline.php
+++ b/vendor/symfony/yaml/Inline.php
@@ -52,7 +52,7 @@ public static function parse($value, $exceptionOnInvalidType = false, $objectSup
             return '';
         }
 
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+        if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) {
             $mbEncoding = mb_internal_encoding();
             mb_internal_encoding('ASCII');
         }
@@ -204,6 +204,8 @@ private static function dumpArray($value, $exceptionOnInvalidType, $objectSuppor
      * @return string A YAML string
      *
      * @throws ParseException When malformed inline YAML string is parsed
+     *
+     * @internal
      */
     public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true, $references = array())
     {
@@ -234,6 +236,14 @@ public static function parseScalar($scalar, $delimiters = null, $stringDelimiter
                 throw new ParseException(sprintf('Malformed inline YAML string (%s).', $scalar));
             }
 
+            // a non-quoted string cannot start with @ or ` (reserved) nor with a scalar indicator (| or >)
+            if ($output && ('@' === $output[0] || '`' === $output[0] || '|' === $output[0] || '>' === $output[0])) {
+                @trigger_error(sprintf('Not quoting a scalar starting with "%s" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $output[0]), E_USER_DEPRECATED);
+
+                // to be thrown in 3.0
+                // throw new ParseException(sprintf('The reserved indicator "%s" cannot start a plain scalar; you need to quote the scalar.', $output[0]));
+            }
+
             if ($evaluate) {
                 $output = self::evaluateScalar($output, $references);
             }
diff --git a/vendor/symfony/yaml/Parser.php b/vendor/symfony/yaml/Parser.php
index 04f2237..47af338 100644
--- a/vendor/symfony/yaml/Parser.php
+++ b/vendor/symfony/yaml/Parser.php
@@ -62,7 +62,7 @@ public function parse($value, $exceptionOnInvalidType = false, $objectSupport =
         $value = $this->cleanup($value);
         $this->lines = explode("\n", $value);
 
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+        if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) {
             $mbEncoding = mb_internal_encoding();
             mb_internal_encoding('UTF-8');
         }
@@ -114,7 +114,7 @@ public function parse($value, $exceptionOnInvalidType = false, $objectSupport =
 
                         $data[] = $parser->parse($block, $exceptionOnInvalidType, $objectSupport, $objectForMap);
                     } else {
-                        $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                        $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context);
                     }
                 }
                 if ($isRef) {
@@ -230,7 +230,7 @@ public function parse($value, $exceptionOnInvalidType = false, $objectSupport =
                         }
                     }
                 } else {
-                    $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                    $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context);
                     // Spec: Keys MUST be unique; first one wins.
                     // But overwriting is allowed when a merge node is used in current block.
                     if ($allowOverwrite || !isset($data[$key])) {
@@ -347,7 +347,7 @@ private function getNextEmbedBlock($indentation = null, $inSequence = false)
         if (null === $indentation) {
             $newIndent = $this->getCurrentLineIndentation();
 
-            $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem($this->currentLine);
+            $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem();
 
             if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) {
                 throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
@@ -373,7 +373,7 @@ private function getNextEmbedBlock($indentation = null, $inSequence = false)
             return;
         }
 
-        $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);
+        $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem();
 
         // Comments must not be removed inside a block scalar
         $removeCommentsPattern = '~'.self::BLOCK_SCALAR_HEADER_PATTERN.'$~';
@@ -386,7 +386,7 @@ private function getNextEmbedBlock($indentation = null, $inSequence = false)
                 $removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
             }
 
-            if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine) && $newIndent === $indent) {
+            if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem() && $newIndent === $indent) {
                 $this->moveToPreviousLine();
                 break;
             }
@@ -445,12 +445,13 @@ private function moveToPreviousLine()
      * @param bool   $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise
      * @param bool   $objectSupport          True if object support is enabled, false otherwise
      * @param bool   $objectForMap           true if maps should return a stdClass instead of array()
+     * @param string $context                The parser context (either sequence or mapping)
      *
      * @return mixed A PHP value
      *
      * @throws ParseException When reference does not exist
      */
-    private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap)
+    private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $context)
     {
         if (0 === strpos($value, '*')) {
             if (false !== $pos = strpos($value, '#')) {
@@ -473,7 +474,16 @@ private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $ob
         }
 
         try {
-            return Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
+            $parsedValue = Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
+
+            if ('mapping' === $context && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && false !== strpos($parsedValue, ': ')) {
+                @trigger_error(sprintf('Using a colon in an unquoted mapping value in line %d is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $this->getRealCurrentLineNb() + 1), E_USER_DEPRECATED);
+
+                // to be thrown in 3.0
+                // throw new ParseException('A colon cannot be used in an unquoted mapping value.');
+            }
+
+            return $parsedValue;
         } catch (ParseException $e) {
             $e->setParsedLine($this->getRealCurrentLineNb() + 1);
             $e->setSnippet($this->currentLine);
@@ -690,7 +700,7 @@ private function isNextLineUnIndentedCollection()
         if (
             $this->getCurrentLineIndentation() == $currentIndentation
             &&
-            $this->isStringUnIndentedCollectionItem($this->currentLine)
+            $this->isStringUnIndentedCollectionItem()
         ) {
             $ret = true;
         }
diff --git a/vendor/symfony/yaml/Unescaper.php b/vendor/symfony/yaml/Unescaper.php
index 1b5e5ec..d2f5054 100644
--- a/vendor/symfony/yaml/Unescaper.php
+++ b/vendor/symfony/yaml/Unescaper.php
@@ -16,6 +16,8 @@
  * YAML strings.
  *
  * @author Matthew Lewinski <matthew@lewinski.org>
+ *
+ * @internal
  */
 class Unescaper
 {
@@ -32,7 +34,7 @@ class Unescaper
     /**
      * Regex fragment that matches an escaped character in a double quoted string.
      */
-    const REGEX_ESCAPED_CHARACTER = "\\\\([0abt\tnvfre \\\"\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})";
+    const REGEX_ESCAPED_CHARACTER = "\\\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.)";
 
     /**
      * Unescapes a single quoted string.
@@ -70,10 +72,13 @@ public function unescapeDoubleQuotedString($value)
      * @param string $value An escaped character
      *
      * @return string The unescaped character
+     *
+     * @internal This method is public to be usable as callback. It should not
+     *           be used in user code. Should be changed in 3.0.
      */
     public function unescapeCharacter($value)
     {
-        switch ($value{1}) {
+        switch ($value[1]) {
             case '0':
                 return "\x0";
             case 'a':
@@ -120,6 +125,10 @@ public function unescapeCharacter($value)
                 return self::utf8chr(hexdec(substr($value, 2, 4)));
             case 'U':
                 return self::utf8chr(hexdec(substr($value, 2, 8)));
+            default:
+                @trigger_error('Not escaping a backslash in a double-quoted string is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', E_USER_DEPRECATED);
+
+                return $value;
         }
     }
 
diff --git a/vendor/symfony/yaml/composer.json b/vendor/symfony/yaml/composer.json
index b798141..af97f80 100644
--- a/vendor/symfony/yaml/composer.json
+++ b/vendor/symfony/yaml/composer.json
@@ -19,12 +19,15 @@
         "php": ">=5.3.9"
     },
     "autoload": {
-        "psr-4": { "Symfony\\Component\\Yaml\\": "" }
+        "psr-4": { "Symfony\\Component\\Yaml\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
     },
     "minimum-stability": "dev",
     "extra": {
         "branch-alias": {
-            "dev-master": "2.7-dev"
+            "dev-master": "2.8-dev"
         }
     }
 }
diff --git a/vendor/symfony/yaml/phpunit.xml.dist b/vendor/symfony/yaml/phpunit.xml.dist
index 418b2c6..6bdbea1 100644
--- a/vendor/symfony/yaml/phpunit.xml.dist
+++ b/vendor/symfony/yaml/phpunit.xml.dist
@@ -20,8 +20,8 @@
         <whitelist>
             <directory>./</directory>
             <exclude>
-                <directory>./vendor</directory>
                 <directory>./Tests</directory>
+                <directory>./vendor</directory>
             </exclude>
         </whitelist>
     </filter>
diff --git a/vendor/zendframework/zend-diactoros/CHANGELOG.md b/vendor/zendframework/zend-diactoros/CHANGELOG.md
index 57b0a87..aca2ab8 100644
--- a/vendor/zendframework/zend-diactoros/CHANGELOG.md
+++ b/vendor/zendframework/zend-diactoros/CHANGELOG.md
@@ -2,12 +2,70 @@
 
 All notable changes to this project will be documented in this file, in reverse chronological order by release.
 
-## 1.1.3 - 2015-08-10
+## 1.2.0 - 2015-11-24
 
 ### Added
 
+- [#88](https://github.com/zendframework/zend-diactoros/pull/88) updates the
+  `SapiEmitter` to emit a `Content-Length` header with the content length as
+  reported by the response body stream, assuming that
+  `StreamInterface::getSize()` returns an integer.
+- [#77](https://github.com/zendframework/zend-diactoros/pull/77) adds a new
+  response type, `Zend\Diactoros\Response\TextResponse`, for returning plain
+  text responses. By default, it sets the content type to `text/plain;
+  charset=utf-8`; per the other response types, the signature is `new
+  TextResponse($text, $status = 200, array $headers = []`.
+- [#90](https://github.com/zendframework/zend-diactoros/pull/90) adds a new
+  `Zend\Diactoros\CallbackStream`, allowing you to back a stream with a PHP
+  callable (such as a generator) to generate the message content. Its
+  constructor accepts the callable: `$stream = new CallbackStream($callable);`
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
 - Nothing.
 
+### Fixed
+
+- [#77](https://github.com/zendframework/zend-diactoros/pull/77) updates the
+  `HtmlResponse` to set the charset to utf-8 by default (if no content type
+  header is provided at instantiation).
+
+## 1.1.4 - 2015-10-16
+
+### Added
+
+- [#98](https://github.com/zendframework/zend-diactoros/pull/98) adds
+  `JSON_UNESCAPED_SLASHES` to the default `json_encode` flags used by
+  `Zend\Diactoros\Response\JsonResponse`.
+
+### Deprecated
+
+- Nothing.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- [#96](https://github.com/zendframework/zend-diactoros/pull/96) updates
+  `withPort()` to allow `null` port values (indicating usage of default for
+  the given scheme).
+- [#91](https://github.com/zendframework/zend-diactoros/pull/91) fixes the
+  logic of `withUri()` to do a case-insensitive check for an existing `Host`
+  header, replacing it with the new one.
+
+## 1.1.3 - 2015-08-10
+
+### Added
+
+- [#73](https://github.com/zendframework/zend-diactoros/pull/73) adds caching of
+  the vendor directory to the Travis-CI configuration, to speed up builds.
+
 ### Deprecated
 
 - Nothing.
@@ -181,7 +239,7 @@ immediately.
 - [#57](https://github.com/zendframework/zend-diactoros/pull/57) fixes the
   behavior of how the `ServerRequestFactory` marshals upload files when they are
   represented as a nested associative array.
-- [#49](https://github.com/zendframework/zend-diactoros/pull/49) provides several 
+- [#49](https://github.com/zendframework/zend-diactoros/pull/49) provides several
   fixes that ensure that Diactoros complies with the PSR-7 specification:
   - `MessageInterface::getHeaderLine()` MUST return a string (that string CAN be
     empty). Previously, Diactoros would return `null`.
diff --git a/vendor/zendframework/zend-diactoros/README.md b/vendor/zendframework/zend-diactoros/README.md
index b25dc9b..0d18a99 100644
--- a/vendor/zendframework/zend-diactoros/README.md
+++ b/vendor/zendframework/zend-diactoros/README.md
@@ -27,8 +27,14 @@ $ php -S 0.0.0.0:8080 -t doc/html/ # then browse to http://localhost:8080/
 
 > ### Bookdown
 >
-> You can install bookdown globally using `composer global require bookdown/bookdown`. If you do
-> this, make sure that `$HOME/.composer/vendor/bin` is on your `$PATH`.
+> You can install bookdown globally using `composer global require bookdown/bookdown`. 
+> If you do this, make sure that `$HOME/.composer/vendor/bin` is on your `$PATH`;
+> on *nix-like systems, you can do this by adding the following line to your
+> `.bashrc` (or preferred shell RC file):
+>
+> ```bash
+> export PATH="$HOME/.composer/vendor/bin:$PATH"
+> ```
 
   [Master]: https://travis-ci.org/zendframework/zend-diactoros
   [Master image]: https://secure.travis-ci.org/zendframework/zend-diactoros.svg?branch=master
diff --git a/vendor/zendframework/zend-diactoros/composer.json b/vendor/zendframework/zend-diactoros/composer.json
index fee75d9..3e59a48 100644
--- a/vendor/zendframework/zend-diactoros/composer.json
+++ b/vendor/zendframework/zend-diactoros/composer.json
@@ -15,8 +15,8 @@
   },
   "extra": {
     "branch-alias": {
-      "dev-master": "1.0-dev",
-      "dev-develop": "1.1-dev"
+      "dev-master": "1.2-dev",
+      "dev-develop": "1.3-dev"
     }
   },
   "require": {
diff --git a/vendor/zendframework/zend-diactoros/phpcs.xml b/vendor/zendframework/zend-diactoros/phpcs.xml
deleted file mode 100644
index e994eae..0000000
--- a/vendor/zendframework/zend-diactoros/phpcs.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<ruleset name="Zend Framework coding standard">
-    <description>Zend Framework coding standard</description>
-
-    <!-- display progress -->
-    <arg value="p"/>
-    <arg name="colors"/>
-
-    <!-- inherit rules from: -->
-    <rule ref="PSR2"/>
-    <rule ref="Generic.Arrays.DisallowLongArraySyntax"/>
-    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
-        <properties>
-            <property name="ignoreBlankLines" value="false"/>
-        </properties>
-    </rule>
-
-    <!-- Paths to check -->
-    <file>src</file>
-    <file>test</file>
-</ruleset>
diff --git a/vendor/zendframework/zend-diactoros/src/RequestTrait.php b/vendor/zendframework/zend-diactoros/src/RequestTrait.php
index 2ef15a9..a272bf3 100644
--- a/vendor/zendframework/zend-diactoros/src/RequestTrait.php
+++ b/vendor/zendframework/zend-diactoros/src/RequestTrait.php
@@ -249,6 +249,16 @@ public function withUri(UriInterface $uri, $preserveHost = false)
         }
 
         $new->headerNames['host'] = 'Host';
+
+        // Remove an existing host header if present, regardless of current
+        // de-normalization of the header name.
+        // @see https://github.com/zendframework/zend-diactoros/issues/91
+        foreach (array_keys($new->headers) as $header) {
+            if (strtolower($header) === 'host') {
+                unset($new->headers[$header]);
+            }
+        }
+
         $new->headers['Host'] = [$host];
 
         return $new;
diff --git a/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php b/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php
index d298ee0..3342609 100644
--- a/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php
+++ b/vendor/zendframework/zend-diactoros/src/Response/HtmlResponse.php
@@ -41,7 +41,7 @@ public function __construct($html, $status = 200, array $headers = [])
         parent::__construct(
             $this->createBody($html),
             $status,
-            $this->injectContentType('text/html', $headers)
+            $this->injectContentType('text/html; charset=utf-8', $headers)
         );
     }
 
diff --git a/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php b/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php
index 766c866..5e41458 100644
--- a/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php
+++ b/vendor/zendframework/zend-diactoros/src/Response/JsonResponse.php
@@ -25,6 +25,17 @@ class JsonResponse extends Response
     use InjectContentTypeTrait;
 
     /**
+     * Default flags for json_encode; value of:
+     *
+     * <code>
+     * JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT | JSON_UNESCAPED_SLASHES
+     * </code>
+     *
+     * @const int
+     */
+    const DEFAULT_JSON_FLAGS = 79;
+
+    /**
      * Create a JSON response with the given data.
      *
      * Default JSON encoding is performed with the following options, which
@@ -34,6 +45,7 @@ class JsonResponse extends Response
      * - JSON_HEX_APOS
      * - JSON_HEX_AMP
      * - JSON_HEX_QUOT
+     * - JSON_UNESCAPED_SLASHES
      *
      * @param mixed $data Data to convert to JSON.
      * @param int $status Integer status code for the response; 200 by default.
@@ -41,8 +53,12 @@ class JsonResponse extends Response
      * @param int $encodingOptions JSON encoding options to use.
      * @throws InvalidArgumentException if unable to encode the $data to JSON.
      */
-    public function __construct($data, $status = 200, array $headers = [], $encodingOptions = 15)
-    {
+    public function __construct(
+        $data,
+        $status = 200,
+        array $headers = [],
+        $encodingOptions = self::DEFAULT_JSON_FLAGS
+    ) {
         $body = new Stream('php://temp', 'wb+');
         $body->write($this->jsonEncode($data, $encodingOptions));
 
diff --git a/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php b/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php
index bba291e..c59257b 100644
--- a/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php
+++ b/vendor/zendframework/zend-diactoros/src/Response/SapiEmitter.php
@@ -29,6 +29,14 @@ public function emit(ResponseInterface $response, $maxBufferLevel = null)
             throw new RuntimeException('Unable to emit response; headers already sent');
         }
 
+        if (! $response->hasHeader('Content-Length')) {
+            // PSR-7 indicates int OR null for the stream size; for null values,
+            // we will not auto-inject the Content-Length.
+            if (null !== $response->getBody()->getSize()) {
+                $response = $response->withHeader('Content-Length', (string) $response->getBody()->getSize());
+            }
+        }
+
         $this->emitStatusLine($response);
         $this->emitHeaders($response);
         $this->emitBody($response, $maxBufferLevel);
diff --git a/vendor/zendframework/zend-diactoros/src/Uri.php b/vendor/zendframework/zend-diactoros/src/Uri.php
index be3077a..ff92107 100644
--- a/vendor/zendframework/zend-diactoros/src/Uri.php
+++ b/vendor/zendframework/zend-diactoros/src/Uri.php
@@ -306,21 +306,23 @@ public function withHost($host)
      */
     public function withPort($port)
     {
-        if (! is_numeric($port)) {
+        if (! is_numeric($port) && $port !== null) {
             throw new InvalidArgumentException(sprintf(
-                'Invalid port "%s" specified; must be an integer or integer string',
+                'Invalid port "%s" specified; must be an integer, an integer string, or null',
                 (is_object($port) ? get_class($port) : gettype($port))
             ));
         }
 
-        $port = (int) $port;
+        if ($port !== null) {
+            $port = (int) $port;
+        }
 
         if ($port === $this->port) {
             // Do nothing if no change was made.
             return clone $this;
         }
 
-        if ($port < 1 || $port > 65535) {
+        if ($port !== null && $port < 1 || $port > 65535) {
             throw new InvalidArgumentException(sprintf(
                 'Invalid port "%d" specified; must be a valid TCP/UDP port',
                 $port
diff --git a/vendor/zendframework/zend-feed/CHANGELOG.md b/vendor/zendframework/zend-feed/CHANGELOG.md
index 426cab5..850a7b1 100644
--- a/vendor/zendframework/zend-feed/CHANGELOG.md
+++ b/vendor/zendframework/zend-feed/CHANGELOG.md
@@ -2,11 +2,42 @@
 
 All notable changes to this project will be documented in this file, in reverse chronological order by release.
 
-## 2.5.2 - TBD
+## 2.6.0 - 2015-11-24
 
 ### Added
 
-- Nothing.
+- [#13](https://github.com/zendframework/zend-feed/pull/13) introduces
+  `Zend\Feed\Writer\StandaloneExtensionManager`, an implementation of
+  `Zend\Feed\Writer\ExtensionManagerInterface` that has no dependencies.
+  `Zend\Feed\Writer\ExtensionManager` now composes this by default, instead of
+  `Zend\Feed\Writer\ExtensionPluginManager`, for managing the various feed and
+  entry extensions. If you relied on `ExtensionPluginManager` previously, you
+  will need to create an instance manually and inject it into the `Writer`
+  instance.
+- [#14](https://github.com/zendframework/zend-feed/pull/14) introduces:
+  - `Zend\Feed\Reader\Http\HeaderAwareClientInterface`, which extends
+    `ClientInterface` and adds an optional argument to the `get()` method,
+    `array $headers = []`; this argument allows specifying request headers for
+    the client to send. `$headers` should have header names for keys, and the
+    values should be arrays of strings/numbers representing the header values
+    (if only a single value is necessary, it should be represented as an single
+    value array).
+  - `Zend\Feed\Reader\Http\HeaderAwareResponseInterface`, which extends
+    `ResponseInterface` and adds the method `getHeader($name, $default = null)`.
+    Clients may return either a `ResponseInterface` or
+    `HeaderAwareResponseInterface` instance.
+  - `Zend\Feed\Reader\Http\Response`, which is an implementation of
+    `HeaderAwareResponseInterface`. Its constructor accepts the status code,
+    body, and, optionally, headers.
+  - `Zend\Feed\Reader\Http\Psr7ResponseDecorator`, which is an implementation of
+    `HeaderAwareResponseInterface`. Its constructor accepts a PSR-7 response
+    instance, and the various methdos then proxy to those methods. This should
+    make creating wrappers for PSR-7 HTTP clients trivial.
+  - `Zend\Feed\Reader\Http\ZendHttpClientDecorator`, which decorates a
+    `Zend\Http\Client` instance, implements `HeaderAwareClientInterface`, and
+    returns a `Response` instance seeded from the zend-http response upon
+    calling `get()`. The class exposes a `getDecoratedClient()` method to allow
+    retrieval of the decorated zend-http client instance.
 
 ### Deprecated
 
@@ -23,3 +54,19 @@ All notable changes to this project will be documented in this file, in reverse
 - [#2](https://github.com/zendframework/zend-feed/pull/2) ensures that the
   routine for "absolutising" a link in `Reader\FeedSet` always generates a URI
   with a scheme.
+- [#14](https://github.com/zendframework/zend-feed/pull/14) makes the following
+  changes to fix behavior around HTTP clients used within
+  `Zend\Feed\Reader\Reader`:
+  - `setHttpClient()` now ensures that the passed client is either a
+    `Zend\Feed\Reader\Http\ClientInterface` or `Zend\Http\Client`, raising an
+    `InvalidArgumentException` if neither. If a `Zend\Http\Client` is passed, it
+    is passed to the constructor of `Zend\Feed\Reader\Http\ZendHttpClientDecorator`,
+    and the decorator instance is used.
+  - `getHttpClient()` now *always* returns a `Zend\Feed\Reader\Http\ClientInterface`
+    instance. If no instance is currently registered, it lazy loads a
+    `ZendHttpClientDecorator` instance.
+  - `import()` was updated to consume a `ClientInterface` instance; when caches
+    are in play, it checks the client against `HeaderAwareClientInterface` to
+    determine if it can check for HTTP caching headers, and, if so, to retrieve
+    them.
+  - `findFeedLinks()` was updated to consume a `ClientInterface`.
diff --git a/vendor/zendframework/zend-feed/composer.json b/vendor/zendframework/zend-feed/composer.json
index 2c29f06..2daa130 100644
--- a/vendor/zendframework/zend-feed/composer.json
+++ b/vendor/zendframework/zend-feed/composer.json
@@ -21,24 +21,25 @@
         "zendframework/zend-db": "~2.5",
         "zendframework/zend-cache": "~2.5",
         "zendframework/zend-http": "~2.5",
-        "zendframework/zend-servicemanager": "~2.5",
         "zendframework/zend-validator": "~2.5",
         "fabpot/php-cs-fixer": "1.7.*",
-        "phpunit/PHPUnit": "~4.0"
+        "phpunit/PHPUnit": "~4.0",
+        "psr/http-message": "^1.0"
     },
     "suggest": {
-        "zendframework/zend-cache": "Zend\\Cache component",
-        "zendframework/zend-db": "Zend\\Db component",
+        "psr/http-message": "PSR-7 ^1.0, if you wish to use Zend\\Feed\\Reader\\Http\\Psr7ResponseDecorator",
+        "zendframework/zend-cache": "Zend\\Cache component, for optionally caching feeds between requests",
+        "zendframework/zend-db": "Zend\\Db component, for use with PubSubHubbub",
         "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
-        "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations",
-        "zendframework/zend-validator": "Zend\\Validator component"
+        "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for easily extending ExtensionManager implementations",
+        "zendframework/zend-validator": "Zend\\Validator component, for validating feeds and Atom entries in the Writer subcomponent"
     },
     "minimum-stability": "dev",
     "prefer-stable": true,
     "extra": {
         "branch-alias": {
-            "dev-master": "2.5-dev",
-            "dev-develop": "2.6-dev"
+            "dev-master": "2.6-dev",
+            "dev-develop": "2.7-dev"
         }
     },
     "autoload-dev": {
@@ -46,4 +47,4 @@
             "ZendTest\\Feed\\": "test/"
         }
     }
-}
\ No newline at end of file
+}
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php b/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php
index c68f360..84efaad 100644
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php
+++ b/vendor/zendframework/zend-feed/src/Reader/Entry/Atom.php
@@ -104,7 +104,7 @@ public function getContent()
     /**
      * Get the entry creation date
      *
-     * @return string
+     * @return \DateTime
      */
     public function getDateCreated()
     {
@@ -122,7 +122,7 @@ public function getDateCreated()
     /**
      * Get the entry modification date
      *
-     * @return string
+     * @return \DateTime
      */
     public function getDateModified()
     {
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php b/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php
index c5e5fb2..250f4b6 100644
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php
+++ b/vendor/zendframework/zend-feed/src/Reader/Entry/EntryInterface.php
@@ -38,14 +38,14 @@ public function getContent();
     /**
      * Get the entry creation date
      *
-     * @return string
+     * @return \DateTime
      */
     public function getDateCreated();
 
     /**
      * Get the entry modification date
      *
-     * @return string
+     * @return \DateTime
      */
     public function getDateModified();
 
diff --git a/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php b/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php
index b55fdad..0832ba3 100644
--- a/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php
+++ b/vendor/zendframework/zend-feed/src/Reader/Entry/Rss.php
@@ -167,7 +167,7 @@ public function getContent()
     /**
      * Get the entry's date of creation
      *
-     * @return string
+     * @return \DateTime
      */
     public function getDateCreated()
     {
@@ -178,7 +178,7 @@ public function getDateCreated()
      * Get the entry's date of modification
      *
      * @throws Exception\RuntimeException
-     * @return string
+     * @return \DateTime
      */
     public function getDateModified()
     {
diff --git a/vendor/zendframework/zend-feed/src/Reader/Reader.php b/vendor/zendframework/zend-feed/src/Reader/Reader.php
index 09bdcf4..693a3e2 100644
--- a/vendor/zendframework/zend-feed/src/Reader/Reader.php
+++ b/vendor/zendframework/zend-feed/src/Reader/Reader.php
@@ -14,6 +14,7 @@
 use Zend\Cache\Storage\StorageInterface as CacheStorage;
 use Zend\Http as ZendHttp;
 use Zend\Stdlib\ErrorHandler;
+use Zend\Feed\Reader\Exception\InvalidHttpClientException;
 
 /**
 */
@@ -57,7 +58,7 @@ class Reader implements ReaderImportInterface
     /**
      * HTTP client object to use for retrieving feeds
      *
-     * @var ZendHttp\Client
+     * @var Http\ClientInterface
      */
     protected static $httpClient = null;
 
@@ -117,23 +118,30 @@ public static function setCache(CacheStorage $cache)
      *
      * Sets the HTTP client object to use for retrieving the feeds.
      *
-     * @param  ZendHttp\Client $httpClient
+     * @param  ZendHttp\Client | Http\ClientInterface $httpClient
      * @return void
      */
-    public static function setHttpClient(ZendHttp\Client $httpClient)
+    public static function setHttpClient($httpClient)
     {
+        if ($httpClient instanceof ZendHttp\Client) {
+            $httpClient = new Http\ZendHttpClientDecorator($httpClient);
+        }
+
+        if (! $httpClient instanceof Http\ClientInterface) {
+            throw new InvalidHttpClientException();
+        }
         static::$httpClient = $httpClient;
     }
 
     /**
      * Gets the HTTP client object. If none is set, a new ZendHttp\Client will be used.
      *
-     * @return ZendHttp\Client
+     * @return Http\ClientInterface
      */
     public static function getHttpClient()
     {
-        if (!static::$httpClient instanceof ZendHttp\Client) {
-            static::$httpClient = new ZendHttp\Client();
+        if (! static::$httpClient) {
+            static::$httpClient = new Http\ZendHttpClientDecorator(new ZendHttp\Client());
         }
 
         return static::$httpClient;
@@ -189,17 +197,16 @@ public static function useHttpConditionalGet($bool = true)
      */
     public static function import($uri, $etag = null, $lastModified = null)
     {
-        $cache       = self::getCache();
-        $client      = self::getHttpClient();
-        $client->resetParameters();
-        $headers = new ZendHttp\Headers();
-        $client->setHeaders($headers);
-        $client->setUri($uri);
+        $cache   = self::getCache();
+        $client  = self::getHttpClient();
         $cacheId = 'Zend_Feed_Reader_' . md5($uri);
 
         if (static::$httpConditionalGet && $cache) {
-            $data = $cache->getItem($cacheId);
-            if ($data) {
+            $headers = [];
+            $data    = $cache->getItem($cacheId);
+            if ($data && $client instanceof Http\HeaderAwareClientInterface) {
+                // Only check for ETag and last modified values in the cache
+                // if we have a client capable of emitting headers in the first place.
                 if ($etag === null) {
                     $etag = $cache->getItem($cacheId . '_etag');
                 }
@@ -207,13 +214,13 @@ public static function import($uri, $etag = null, $lastModified = null)
                     $lastModified = $cache->getItem($cacheId . '_lastmodified');
                 }
                 if ($etag) {
-                    $headers->addHeaderLine('If-None-Match', $etag);
+                    $headers['If-None-Match'] = [$etag];
                 }
                 if ($lastModified) {
-                    $headers->addHeaderLine('If-Modified-Since', $lastModified);
+                    $headers['If-Modified-Since'] = [$lastModified];
                 }
             }
-            $response = $client->send();
+            $response = $client->get($uri, $headers);
             if ($response->getStatusCode() !== 200 && $response->getStatusCode() !== 304) {
                 throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
             }
@@ -222,11 +229,14 @@ public static function import($uri, $etag = null, $lastModified = null)
             } else {
                 $responseXml = $response->getBody();
                 $cache->setItem($cacheId, $responseXml);
-                if ($response->getHeaders()->get('ETag')) {
-                    $cache->setItem($cacheId . '_etag', $response->getHeaders()->get('ETag')->getFieldValue());
-                }
-                if ($response->getHeaders()->get('Last-Modified')) {
-                    $cache->setItem($cacheId . '_lastmodified', $response->getHeaders()->get('Last-Modified')->getFieldValue());
+
+                if ($response instanceof Http\HeaderAwareResponseInterface) {
+                    if ($response->getHeaderLine('ETag', false)) {
+                        $cache->setItem($cacheId . '_etag', $response->getHeaderLine('ETag'));
+                    }
+                    if ($response->getHeaderLine('Last-Modified', false)) {
+                        $cache->setItem($cacheId . '_lastmodified', $response->getHeaderLine('Last-Modified'));
+                    }
                 }
             }
             return static::importString($responseXml);
@@ -235,7 +245,7 @@ public static function import($uri, $etag = null, $lastModified = null)
             if ($data) {
                 return static::importString($data);
             }
-            $response = $client->send();
+            $response = $client->get($uri);
             if ((int) $response->getStatusCode() !== 200) {
                 throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
             }
@@ -243,7 +253,7 @@ public static function import($uri, $etag = null, $lastModified = null)
             $cache->setItem($cacheId, $responseXml);
             return static::importString($responseXml);
         } else {
-            $response = $client->send();
+            $response = $client->get($uri);
             if ((int) $response->getStatusCode() !== 200) {
                 throw new Exception\RuntimeException('Feed failed to load, got response code ' . $response->getStatusCode());
             }
@@ -270,7 +280,7 @@ public static function import($uri, $etag = null, $lastModified = null)
     public static function importRemoteFeed($uri, Http\ClientInterface $client)
     {
         $response = $client->get($uri);
-        if (!$response instanceof Http\ResponseInterface) {
+        if (! $response instanceof Http\ResponseInterface) {
             throw new Exception\RuntimeException(sprintf(
                 'Did not receive a %s\Http\ResponseInterface from the provided HTTP client; received "%s"',
                 __NAMESPACE__,
@@ -371,9 +381,8 @@ public static function importFile($filename)
      */
     public static function findFeedLinks($uri)
     {
-        $client = static::getHttpClient();
-        $client->setUri($uri);
-        $response = $client->send();
+        $client   = static::getHttpClient();
+        $response = $client->get($uri);
         if ($response->getStatusCode() !== 200) {
             throw new Exception\RuntimeException("Failed to access $uri, got response code " . $response->getStatusCode());
         }
diff --git a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
index 0b21b3b..054fe3e 100644
--- a/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
+++ b/vendor/zendframework/zend-feed/src/Writer/Extension/ITunes/Feed.php
@@ -14,8 +14,6 @@
 use Zend\Stdlib\StringUtils;
 use Zend\Stdlib\StringWrapper\StringWrapperInterface;
 
-/**
-*/
 class Feed
 {
     /**
diff --git a/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php b/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php
index b0e0e3b..a7efb3e 100644
--- a/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php
+++ b/vendor/zendframework/zend-feed/src/Writer/ExtensionManager.php
@@ -12,7 +12,7 @@
 /**
  * Default implementation of ExtensionManagerInterface
  *
- * Decorator of ExtensionPluginManager.
+ * Decorator for an ExtensionManagerInstance.
  */
 class ExtensionManager implements ExtensionManagerInterface
 {
@@ -22,14 +22,14 @@ class ExtensionManager implements ExtensionManagerInterface
      * Constructor
      *
      * Seeds the extension manager with a plugin manager; if none provided,
-     * creates an instance.
+     * creates and decorates an instance of StandaloneExtensionManager.
      *
-     * @param  null|ExtensionPluginManager $pluginManager
+     * @param  null|ExtensionManagerInterface $pluginManager
      */
-    public function __construct(ExtensionPluginManager $pluginManager = null)
+    public function __construct(ExtensionManagerInterface $pluginManager = null)
     {
         if (null === $pluginManager) {
-            $pluginManager = new ExtensionPluginManager();
+            $pluginManager = new StandaloneExtensionManager();
         }
         $this->pluginManager = $pluginManager;
     }
@@ -37,7 +37,7 @@ public function __construct(ExtensionPluginManager $pluginManager = null)
     /**
      * Method overloading
      *
-     * Proxy to composed ExtensionPluginManager instance.
+     * Proxy to composed ExtensionManagerInterface instance.
      *
      * @param  string $method
      * @param  array $args
diff --git a/vendor/zendframework/zend-feed/src/Writer/Writer.php b/vendor/zendframework/zend-feed/src/Writer/Writer.php
index a4f95bf..4c1e257 100644
--- a/vendor/zendframework/zend-feed/src/Writer/Writer.php
+++ b/vendor/zendframework/zend-feed/src/Writer/Writer.php
@@ -105,13 +105,16 @@ public static function registerExtension($name)
                 return;
             }
         }
-        if (!$manager->has($feedName)
-            && !$manager->has($entryName)
-            && !$manager->has($feedRendererName)
-            && !$manager->has($entryRendererName)
+        if (! $manager->has($feedName)
+            && ! $manager->has($entryName)
+            && ! $manager->has($feedRendererName)
+            && ! $manager->has($entryRendererName)
         ) {
-            throw new Exception\RuntimeException('Could not load extension: ' . $name
-                . 'using Plugin Loader. Check prefix paths are configured and extension exists.');
+            throw new Exception\RuntimeException(sprintf(
+                'Could not load extension "%s" using Plugin Loader. '
+                . 'Check prefix paths are configured and extension exists.',
+                $name
+            ));
         }
         if ($manager->has($feedName)) {
             static::$extensions['feed'][] = $feedName;
diff --git a/vendor/zendframework/zend-stdlib/CHANGELOG.md b/vendor/zendframework/zend-stdlib/CHANGELOG.md
index 5ce14e6..72b09ab 100644
--- a/vendor/zendframework/zend-stdlib/CHANGELOG.md
+++ b/vendor/zendframework/zend-stdlib/CHANGELOG.md
@@ -2,6 +2,26 @@
 
 All notable changes to this project will be documented in this file, in reverse chronological order by release.
 
+## 2.7.4 - 2015-10-15
+
+### Added
+
+- Nothing.
+
+### Deprecated
+
+- [#35](https://github.com/zendframework/zend-stdlib/pull/35) deprecates
+  `Zend\Stdlib\CallbackHandler`, as the one component that used it,
+  zend-eventmanager, will no longer depend on it starting in v3.
+
+### Removed
+
+- Nothing.
+
+### Fixed
+
+- Nothing.
+
 ## 2.7.3 - 2015-09-24
 
 ### Added
diff --git a/vendor/zendframework/zend-stdlib/src/CallbackHandler.php b/vendor/zendframework/zend-stdlib/src/CallbackHandler.php
index dc6bc74..dc9bfd5 100644
--- a/vendor/zendframework/zend-stdlib/src/CallbackHandler.php
+++ b/vendor/zendframework/zend-stdlib/src/CallbackHandler.php
@@ -17,6 +17,11 @@
  * A handler for an event, event, filterchain, etc. Abstracts PHP callbacks,
  * primarily to allow for lazy-loading and ensuring availability of default
  * arguments (currying).
+ *
+ * This was primarily used in zend-eventmanager for managing listeners; as that
+ * component removes its usage of this class for v3, it is deprecated.
+ *
+ * @deprecated as of v2.7.4.
  */
 class CallbackHandler
 {
